예제 #1
0
 /**
  * Archives Actions reports for a Day
  *
  * @return bool
  */
 public function aggregateDayReport()
 {
     $rankingQueryLimit = ArchivingHelper::getRankingQueryLimit();
     ArchivingHelper::reloadConfig();
     $this->initActionsTables();
     $this->archiveDayActions($rankingQueryLimit);
     $this->archiveDayEntryActions($rankingQueryLimit);
     $this->archiveDayExitActions($rankingQueryLimit);
     $this->archiveDayActionsTime($rankingQueryLimit);
     $this->insertDayReports();
     return true;
 }
예제 #2
0
 private function aggregateDayInteractions()
 {
     $select = "\n                log_action_content_name.name as contentName,\n                log_action_content_interaction.name as contentInteraction,\n                log_action_content_piece.name as contentPiece,\n\n\t\t\t\tcount(*) as `" . Metrics::INDEX_CONTENT_NB_INTERACTIONS . "`\n        ";
     $from = array("log_link_visit_action", array("table" => "log_action", "tableAlias" => "log_action_content_piece", "joinOn" => "log_link_visit_action.idaction_content_piece = log_action_content_piece.idaction"), array("table" => "log_action", "tableAlias" => "log_action_content_interaction", "joinOn" => "log_link_visit_action.idaction_content_interaction = log_action_content_interaction.idaction"), array("table" => "log_action", "tableAlias" => "log_action_content_name", "joinOn" => "log_link_visit_action.idaction_content_name = log_action_content_name.idaction"));
     $where = "log_link_visit_action.server_time >= ?\n                    AND log_link_visit_action.server_time <= ?\n                    AND log_link_visit_action.idsite = ?\n                    AND log_link_visit_action.idaction_content_name IS NOT NULL\n                    AND log_link_visit_action.idaction_content_interaction IS NOT NULL";
     $groupBy = "log_action_content_piece.idaction,\n                    log_action_content_interaction.idaction,\n                    log_action_content_name.idaction";
     $orderBy = "`" . Metrics::INDEX_CONTENT_NB_INTERACTIONS . "` DESC";
     $rankingQueryLimit = ArchivingHelper::getRankingQueryLimit();
     $rankingQuery = null;
     if ($rankingQueryLimit > 0) {
         $rankingQuery = new RankingQuery($rankingQueryLimit);
         $rankingQuery->setOthersLabel(DataTable::LABEL_SUMMARY_ROW);
         $rankingQuery->addLabelColumn(array('contentPiece', 'contentInteraction', 'contentName'));
         $rankingQuery->addColumn(array(Metrics::INDEX_CONTENT_NB_INTERACTIONS), 'sum');
     }
     $resultSet = $this->archiveDayQueryProcess($select, $from, $where, $groupBy, $orderBy, $rankingQuery);
     while ($row = $resultSet->fetch()) {
         $this->aggregateInteractionRow($row);
     }
 }
예제 #3
0
파일: Archiver.php 프로젝트: piwik/piwik
 protected function aggregateDayEvents()
 {
     $select = "\n                log_action_event_category.name as eventCategory,\n                log_action_event_action.name as eventAction,\n                log_action_event_name.name as eventName,\n\n\t\t\t\tcount(distinct log_link_visit_action.idvisit) as `" . Metrics::INDEX_NB_VISITS . "`,\n\t\t\t\tcount(distinct log_link_visit_action.idvisitor) as `" . Metrics::INDEX_NB_UNIQ_VISITORS . "`,\n\t\t\t\tcount(*) as `" . Metrics::INDEX_EVENT_NB_HITS . "`,\n\n\t\t\t\tsum(\n\t\t\t\t\tcase when " . Action::DB_COLUMN_CUSTOM_FLOAT . " is null\n\t\t\t\t\t\tthen 0\n\t\t\t\t\t\telse " . Action::DB_COLUMN_CUSTOM_FLOAT . "\n\t\t\t\t\tend\n\t\t\t\t) as `" . Metrics::INDEX_EVENT_SUM_EVENT_VALUE . "`,\n\t\t\t\tsum( case when " . Action::DB_COLUMN_CUSTOM_FLOAT . " is null then 0 else 1 end )\n\t\t\t\t    as `" . Metrics::INDEX_EVENT_NB_HITS_WITH_VALUE . "`,\n\t\t\t\tmin(" . Action::DB_COLUMN_CUSTOM_FLOAT . ") as `" . Metrics::INDEX_EVENT_MIN_EVENT_VALUE . "`,\n\t\t\t\tmax(" . Action::DB_COLUMN_CUSTOM_FLOAT . ") as `" . Metrics::INDEX_EVENT_MAX_EVENT_VALUE . "`\n        ";
     $from = array("log_link_visit_action", array("table" => "log_action", "tableAlias" => "log_action_event_category", "joinOn" => "log_link_visit_action.idaction_event_category = log_action_event_category.idaction"), array("table" => "log_action", "tableAlias" => "log_action_event_action", "joinOn" => "log_link_visit_action.idaction_event_action = log_action_event_action.idaction"), array("table" => "log_action", "tableAlias" => "log_action_event_name", "joinOn" => "log_link_visit_action.idaction_name = log_action_event_name.idaction"));
     $where = "log_link_visit_action.server_time >= ?\n                    AND log_link_visit_action.server_time <= ?\n                    AND log_link_visit_action.idsite = ?\n                    AND log_link_visit_action.idaction_event_category IS NOT NULL";
     $groupBy = "log_action_event_category.idaction,\n                    log_action_event_action.idaction,\n                    log_action_event_name.idaction";
     $orderBy = "`" . Metrics::INDEX_NB_VISITS . "` DESC";
     $rankingQueryLimit = ArchivingHelper::getRankingQueryLimit();
     $rankingQuery = null;
     if ($rankingQueryLimit > 0) {
         $rankingQuery = new RankingQuery($rankingQueryLimit);
         $rankingQuery->setOthersLabel(DataTable::LABEL_SUMMARY_ROW);
         $rankingQuery->addLabelColumn(array('eventCategory', 'eventAction', 'eventName'));
         $rankingQuery->addColumn(array(Metrics::INDEX_NB_UNIQ_VISITORS));
         $rankingQuery->addColumn(array(Metrics::INDEX_EVENT_NB_HITS, Metrics::INDEX_NB_VISITS, Metrics::INDEX_EVENT_NB_HITS_WITH_VALUE), 'sum');
         $rankingQuery->addColumn(Metrics::INDEX_EVENT_SUM_EVENT_VALUE, 'sum');
         $rankingQuery->addColumn(Metrics::INDEX_EVENT_MIN_EVENT_VALUE, 'min');
         $rankingQuery->addColumn(Metrics::INDEX_EVENT_MAX_EVENT_VALUE, 'max');
     }
     $this->archiveDayQueryProcess($select, $from, $where, $groupBy, $orderBy, $rankingQuery);
 }