public function aggregate(StatsTableBuilder $statsTable) { $column = $statsTable->getColumn($this->columnName)->getValues(); $sum = array_sum($column); $count = count($column); return $count ? $sum / $count : 0; }
public function testBuilder() { $table = array('2014-01-01' => array('hits' => 10, 'subscribers' => 5), '2014-01-02' => array('hits' => 30, 'subscribers' => 9), '2014-01-03' => array('hits' => 0, 'subscribers' => 0)); $statsTable = new StatsTableBuilder($table); $ratioBuilder = new RatioColumnBuilder('subscribers', 'hits', 'N/A'); $statsTable->addDynamicColumn('ratio', $ratioBuilder, 'Ratio'); $ratioData = array('2014-01-01' => 0.5, '2014-01-02' => 0.3, '2014-01-03' => 'N/A'); $ratioColumn = new StatsColumnBuilder($ratioData, 'Ratio'); $this->assertEquals($ratioColumn, $statsTable->getColumn('ratio')); }
public function test() { $table = array('2014-01-01' => array('hits' => 10, 'subscribers' => 5), '2014-01-02' => array('hits' => 30, 'subscribers' => 9), '2014-01-03' => array('hits' => 0, 'subscribers' => 0)); $statsTable = new StatsTableBuilder($table); $sumBuilder = new SumColumnBuilder(array('subscribers', 'hits')); $statsTable->addDynamicColumn('sum', $sumBuilder, 'Sum'); $sumData = array('2014-01-01' => 15, '2014-01-02' => 39, '2014-01-03' => 0); $sumColumn = new StatsColumnBuilder($sumData, 'Sum'); $this->assertEquals($sumColumn, $statsTable->getColumn('sum')); }
public function buildColumnValues(StatsTableBuilder $statsTable) { $column = array(); $columnsValues = array_map(function ($columnName) use($statsTable) { return $statsTable->getColumn($columnName)->getValues(); }, $this->columns); foreach ($statsTable->getIndexes() as $index) { $lineValues = array_map(function ($array) use($index) { return $array[$index]; }, $columnsValues); $column[$index] = array_sum($lineValues); } return $column; }
public function aggregate(StatsTableBuilder $statsTable) { $column = $statsTable->getColumn($this->columnName)->getValues(); return count($column); }
/** * @expectedException \InvalidArgumentException */ public function testInvalidColumn() { $table = array(array('hits' => 0)); $statsTable = new StatsTableBuilder($table); $statsTable->getColumn('invalidColumn'); }