Przepraszamy za konkretne pytanie, ale czuję, że trafiłem w ślepy zaułek, ponieważ moja znajomość SQL nie posuwa się tak daleko.Wybieranie różnych customDimensions w integracji BigQuery GA
Dane, które wychodzi z realizacji BigQuery z Google Analytics surowych danych wygląda następująco:
|-visitId
|- date
|- (....)
+- hits
|- time
+- customDimensions
|- index
|- value
+- customMetrics
|- index
|- value
Wiem, że są przeboje, które zawsze wysłać jakieś dane do GA. W szczególności chcę customDimensions.index = 43, customDimensions.index = 24 i customMetrics.index = 14. Aby określić, Wymiar 43 jest obiektem widzianym lub sprzedawanym, wymiar 24 mówi mi, czy są widoczne i metryczne 14, wartość ma 1, gdy została właśnie sprzedana. Mój wynik końcowy powinien wyglądać następująco:
customDimension.value(when index=43) count(when customDimension.index=24 and customDimension.value=='ficha') count(when customMetrics.index=14 and customMetrics.value ==1))
Zgrupowane przez customDimension.value (gdy indeks = 43) wiem, że za każdym razem, że hitem jest wysyłany z customMetrics.index = 14, to samo uderzenie ma customDimensions. index = 43, w ten sam sposób customDimensions.index = 24 ma zawsze customDimensions.index = 43. Rzeczywiście udało mi się stworzyć SQL, który robi to, co chcę, ale jakim kosztem? Jest duży, jest powolny, brzydki. Co mam aktualnie robi to:
- Utwórz trzy stoliki, wszyscy mający visitId, hit.time i wartość, gdy indeks = 14,24,43
- LEFT JOIN 43 z 24 na 43.visitId == 24.visitId AND 43.hits.time == 24.hits.time jako wynik
- Lewy wynik połączenia z 14 ON 14.visitId == result.visitId AND 14.hits.time == result.hits.time
Nie interesuje mnie ani visitId ani hits.time, to tylko sposób na odniesienie tych samych trafień (i wiedzieć, który produkt kupili, gdy customMetrics.index = 14 i value = 1 .
To jest mój kod:
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
Uruchomienie tego zapytania zajmuje zbyt wiele czasu dla mnie, aby stworzyć pulpit Właściwa z wyników.
Więc pomóż mi, Boże, jeśli to mój ostateczny wynik. Czuję, że powinno być DROGI bardziej eleganckim rozwiązaniem tego problemu, ale nie mogę go znaleźć na własną rękę.
Pomoc?
Może to jest droga. – Datasetter