Я использую BigQuery с экспортированными данными из Google Analytics. Попытка добавить платформу в отчет на уровне сеанса (не знаю, как правильно назвать это измерение, но в основном мне нужно разделить «приложение» и «веб», поэтому «тип устройства» недостаточно).
Я пытаюсь использовать hits.datasource
, но есть одна проблема. Это не совсем измерение уровня сеанса. Я имею в виду, что это так, но из-за специфики отслеживания в моей компании иногда есть несколько разных источников данных для одного сеанса.
Итак, вот полный сценарий, над которым я сейчас работаю:
#standardSQL
SELECT
'DE' as Country,
FORMAT_DATE("%d.%m.%Y", PARSE_DATE("%Y%m%d",date)) AS Date,
channelGrouping AS Channel,
trafficSource.medium as Medium,
trafficSource.source as Source,
trafficSource.campaign as Campaign,
hits[OFFSET(0)].datasource AS Platform, -- part I'm struggling with --
device.deviceCategory as Device,
CASE WHEN device.operatingSystem ='iOS' OR device.operatingSystem ='Android' then device.operatingSystem else 'Other' END as OS,
CASE WHEN SUM(totals.visits)>0 THEN SUM(totals.visits) ELSE 0 END AS Sessions,
CASE WHEN SUM(totals.totalTransactionRevenue)>0 THEN SUM(totals.totalTransactionRevenue)/POW(10,6) ELSE 0 END AS Revenue,
CASE WHEN SUM(totals.transactions)>0 THEN SUM(totals.transactions) ELSE 0 END AS Orders,
CASE WHEN SUM(totals.pageviews) >0 then SUM(totals.pageviews) ELSE 0 END as Pageviews,
CASE WHEN SUM(totals.screenviews) >0 then SUM(totals.screenviews) ELSE 0 END as Screenviews,
CASE WHEN SUM(totals.bounces) >0 then SUM(totals.bounces) ELSE 0 END as Bounces
FROM
`oval-unity-88908.97525772.ga_sessions_*` t
GROUP BY 1,2,3,4,5,6,7,8,9
Я оставил hits[OFFSET(0)].datasource
как временную замену, но я бы хотел поместить туда наиболее используемый источник данных в сеансе.
Вот пара моих попыток заменить эту строку кода. Ничего еще не сработало.
(SELECT ht.datasource FROM (SELECT datasource, SUM(t.totals.hits) FROM t.hits GROUP BY 1 ORDER BY 2 DESC LIMIT 1) ht) AS Platfrom,
.
(SELECT ht.datasource FROM (SELECT datasource, COUNT(1) FROM t.hits GROUP BY 1 ORDER BY 2 DESC LIMIT 1) ht) AS Platfrom,
.
(SELECT hits.datasource FROM UNNEST(t.hits) ORDER BY hits.hitNumber LIMIT 1) AS Platform,
Жду ваших советов о том, как улучшить этот скрипт или, возможно, даже о другом подходе к тому, что я пытаюсь сделать. Ура!