Completed
Push — master ( b809e7...b21e0c )
by Teye
08:09
created

HasVirtualColumns::virtualColumn()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 2
Bugs 1 Features 0
Metric Value
eloc 2
c 2
b 1
f 0
dl 0
loc 5
ccs 3
cts 3
cp 1
rs 10
cc 1
nc 1
nop 3
crap 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Level23\Druid\Concerns;
6
7
use Level23\Druid\Types\DataType;
8
use Level23\Druid\VirtualColumns\VirtualColumn;
9
10
trait HasVirtualColumns
11
{
12
    /**
13
     * @var array|\Level23\Druid\VirtualColumns\VirtualColumnInterface[]
14
     */
15
    protected $virtualColumns = [];
16
17
    /**
18
     * Create a virtual column.
19
     *
20
     * Virtual columns are queryable column "views" created from a set of columns during a query.
21
     *
22
     * A virtual column can potentially draw from multiple underlying columns, although a virtual column always
23
     * presents itself as a single column.
24
     *
25
     * Virtual columns can be used as dimensions or as inputs to aggregators.
26
     *
27
     * NOTE: virtual columns are NOT automatically added to your output. You should select it separately if you want to
28
     * add it also to your output. Use selectVirtual to do both at once.
29
     *
30
     * @param string $expression
31
     * @param string $as
32
     * @param string $outputType
33
     *
34
     * @return $this
35
     * @see https://druid.apache.org/docs/latest/misc/math-expr.html
36
     */
37 8
    public function virtualColumn(string $expression, string $as, $outputType = DataType::STRING)
38
    {
39 8
        $this->virtualColumns[] = new VirtualColumn($expression, $as, $outputType);
40
41 8
        return $this;
42
    }
43
}