BigQuery Session & Hit level level - PullRequest
       14

BigQuery Session & Hit level level

0 голосов
/ 27 августа 2018

Я хочу спросить о ваших знаниях относительно концепции событий.

Уровень удара Уровень сеанса

Как в BigQuery (стандартный SQL), как я могу сопоставить эту логику, а также

Сессия События на сессию Уникальные события

Пожалуйста, кто-нибудь может помочь мне понять эти понятия?

totals.visitors is Session когда-то визит считается идентификатором

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Вы можете думать об этих понятиях так:

  • каждая строка является сеансом
  • технически каждая строка с totals.visits = 1 является допустимым сеансом
  • hits - массив, содержащий структуры, которые содержат информацию для каждого попадания

Вы можете писать подзапросы для массивов - в основном обрабатывать их как таблицы. Я бы рекомендовал изучить Работа с массивами и применить / перенести каждое упражнение непосредственно на hits, если возможно.

Пример для подзапросов на уровне сеанса

SELECT
  fullvisitorid,
  visitStartTime,
  (SELECT SUM(IF(type='EVENT',1,0)) FROM UNNEST(hits)) events,
  (SELECT COUNT(DISTINCT CONCAT(eventInfo.eventCategory,eventInfo.eventAction,eventInfo.eventLabel) ) 
    FROM UNNEST(hits) WHERE type='EVENT') uniqueEvents,
  (SELECT SUM(IF(type='PAGE',1,0)) FROM UNNEST(hits)) pageviews
FROM
  `bigquery-public-data.google_analytics_sample.ga_sessions_20170801`
WHERE
  totals.visits=1
LIMIT
  1000

Пример выравнивания до уровня удара

Существует также возможность использовать поля в массивах для группировки, если вы скрещиваете массивы объединения с их родительской строкой

SELECT
  h.type,
  COUNT(1) hits
FROM
  `bigquery-public-data.google_analytics_sample.ga_sessions_20170801` AS t CROSS JOIN t.hits AS h
WHERE
  totals.visits=1
GROUP BY 
  1

Относительно связи между visitId и Sessions вы можете прочитать этот ответ .

0 голосов
/ 28 августа 2018

, чтобы достичь этого, вам нужно немного разобраться с несколькими различными концепциями. Первое из них - «что такое сеанс» в общепринятом языке. Вы можете найти это здесь . Сессия - это коллекция хитов. Хит является одним из следующих: просмотр страницы, событие, социальное взаимодействие или транзакция.

Теперь, чтобы увидеть, как это представлено в схеме BQ, вы можете посмотреть здесь . visitId и visitorId помогут вам определить сеанс (в отличие от пользователя).

Затем вы можете посчитать количество totals.hits, которые являются событиями нужного вам типа.

Это может выглядеть примерно так:

select visitId, 
sum(case when hits.type = "EVENT" then totals.hits else 0) from 
dataset.table_* group by 1

Это должно сработать, чтобы дать вам обзор. Если вам нужно нарезать и нарезать детали события (например, hits.eventInfo.*), то я предлагаю вам сделать запрос для всех visitId и один для всех соответствующих событий и их соответствующих visitId

Я надеюсь, что это работает!

Приветствия

...