/** * Test to exclude low population filter */ function test_filter_Lowpop1() { $idcol = Piwik_DataTable_Row::COLUMNS; $table = new Piwik_DataTable(); $rows = array(array($idcol => array('label' => 'google', 'nb_visits' => 897)), array($idcol => array('label' => 'ask', 'nb_visits' => -152)), array($idcol => array('label' => 'piwik', 'nb_visits' => 1.5)), array($idcol => array('label' => 'piwik2', 'nb_visits' => 1.4)), array($idcol => array('label' => 'yahoo', 'nb_visits' => 154)), array($idcol => array('label' => 'amazon', 'nb_visits' => 30)), array($idcol => array('label' => '238949', 'nb_visits' => 0)), array($idcol => array('label' => 'Q*(%&*', 'nb_visits' => 1)), array($idcol => array('label' => 'Q*(%&*2', 'nb_visits' => -1.5))); $table->addRowsFromArray($rows); $expectedtable = new Piwik_DataTable(); $rows = array(array($idcol => array('label' => 'google', 'nb_visits' => 897)), array($idcol => array('label' => 'piwik', 'nb_visits' => 1.5)), array($idcol => array('label' => 'piwik2', 'nb_visits' => 1.4)), array($idcol => array('label' => 'yahoo', 'nb_visits' => 154)), array($idcol => array('label' => 'amazon', 'nb_visits' => 30))); $expectedtable->addRowsFromArray($rows); $filter = new Piwik_DataTable_Filter_ExcludeLowPopulation($table, 'nb_visits', 1.4); $filter->filter($table); $this->assertTrue(Piwik_DataTable::isEqual($table, $expectedtable)); }
public function __construct($table, $columnToFilter, $minimumValue) { $this->columnToFilter = $columnToFilter; self::$minimumValue = $minimumValue; parent::__construct($table); $this->filter(); }
/** * Constructor * * @param Piwik_DataTable $table * @param string $columnToFilter column to filter * @param number $minimumValue minimum value * @param bool $minimumPercentageThreshold */ public function __construct($table, $columnToFilter, $minimumValue, $minimumPercentageThreshold = false) { parent::__construct($table); $this->columnToFilter = $columnToFilter; if ($minimumValue == 0) { if ($minimumPercentageThreshold === false) { $minimumPercentageThreshold = self::MINIMUM_SIGNIFICANT_PERCENTAGE_THRESHOLD; } $allValues = $table->getColumn($this->columnToFilter); $sumValues = array_sum($allValues); $minimumValue = $sumValues * $minimumPercentageThreshold; } self::$minimumValue = $minimumValue; }