Извините за конкретный вопрос, но я чувствую, что я зашел в тупик, потому что мои знания SQL не уходят так далеко.Выбор различных customDimensions для интеграции BigQuery GA
данные, что выходит из реализации BigQuery из GoogleAnalytics необработанных данных выглядит следующим образом:
|-visitId
|- date
|- (....)
+- hits
|- time
+- customDimensions
|- index
|- value
+- customMetrics
|- index
|- value
Я знаю, что есть хиты, которые всегда посылают некоторые данные в GA. В частности, я хочу customDimensions.index = 43, customDimensions.index = 24 и customMetrics.index = 14. Чтобы указать, размер 43 - это объект, который просматривается или продается, размер 24 говорит мне, если они видны и метрические 14, значение имеет 1, когда оно только что было продано. Мой окончательный результат должен выглядеть следующим образом:
customDimension.value(when index=43) count(when customDimension.index=24 and customDimension.value=='ficha') count(when customMetrics.index=14 and customMetrics.value ==1))
Группировать по customDimension.value (когда индекс = 43) Я знаю, что каждый раз, что хит отправляется с customMetrics.index = 14, то же попадание customDimensions. index = 43, то же самое, customDimensions.index = 24 всегда имеет customDimensions.index = 43. Мне действительно удалось создать SQL, который делает то, что я хочу, но по какой цене? Он большой, он медленный, он уродлив. То, что я сейчас делаю это:
- Создайте три таблицы, все имеющие visitId, hit.time и значение, когда индекс = 14,24,43
- Выравнивание по левому краю 43 с 24 по 43.visitId == 24.visitId AND 43.hits.time == 24.hits.time как результат
- Результат левого соединения с 14 ON 14.visitId == result.visitId AND 14.hits.time == result.hits.time
Меня не интересует visitId или hits.time, это просто способ связать одни и те же хиты (и знать, какой продукт они купили, когда customMetrics.index = 14 и value = 1.
Это мой код:
SELECT Tviviendasvisitas.viviendaId as ViviendaID ,sum(Tviviendasvisitas.NumeroVisitas) as NumeroVisitas,sum(Ttransacciones.Transactions) as Transactions FROM (
SELECT Tviviendas.visitId as visitId, Tviviendas.hits.time as visitTime, Tviviendas.ViviendaID as viviendaId,Tvisitas.visitas as NumeroVisitas FROM (
SELECT visitId,hits.time,hits.customDimensions.value as ViviendaID FROM ((TABLE_DATE_RANGE([-------.ga_sessions_], TIMESTAMP('2014-09-01'), TIMESTAMP('2014-09-30'))))
WHERE hits.customDimensions.index = 43
GROUP EACH BY visitId,hits.time, ViviendaID)as Tviviendas
LEFT JOIN EACH(
SELECT visitId,hits.time,count(*) as visitas FROM ((TABLE_DATE_RANGE([-------.ga_sessions_], TIMESTAMP('2014-09-01'), TIMESTAMP('2014-09-30'))))
WHERE hits.customDimensions.index = 24 AND hits.customDimensions.value=='ficha'
GROUP EACH BY visitId,hits.time) as Tvisitas
ON Tvisitas.visitId==Tviviendas.visitId AND Tvisitas.time==Tviviendas.time) as Tviviendasvisitas
LEFT JOIN EACH (
SELECT visitId ,hits.time as transactionTime, sum(hits.customMetrics.value) as Transactions FROM(TABLE_DATE_RANGE([-------.ga_sessions_], TIMESTAMP('2014-09-01'), TIMESTAMP('2014-09-30')))
WHERE hits.customMetrics.index = 14 AND hits.customMetrics.value=1
GROUP BY visitId, transactionTime) as Ttransacciones
ON Tviviendasvisitas.visitId==Ttransacciones.visitId AND Tviviendasvisitas.visitTime==Ttransacciones.transactionTime
GROUP BY ViviendaID
Выполнение этого запроса занимает слишком много времени для меня, чтобы создать Проппер панель с результатами.
Так что помоги мне, если это мой конечный результат. Я чувствую, что должно быть WAY более элегантное решение этой проблемы, но я не могу найти ее самостоятельно.
Помощь?
Может быть, это путь. – Datasetter