2016-07-16 12 views
0

Ich habe Probleme beim Extrahieren von Daten aus GA, die einige Ereignisse und benutzerdefinierte Dimensionen enthalten, die wir senden.Wie funktioniert JSON_EXTRACT in BigQuery?

Ich versuche JSON_EXTRACT zu verwenden, und was ich möchte ist bekommen eine Spalte mit allen Werten WHERE customDimension.index = index_number

Hier mein Code ist:

SELECT 
    visitId, 
    JSON_EXTRACT('index_number', '$.hits.customDimensions') as value 
FROM 
    FLATTEN(FLATTEN((
    SELECT * 
    FROM TABLE_DATE_RANGE([103264765.ga_sessions_], TIMESTAMP("2016-07-14"), DATE_ADD(TIMESTAMP(CURRENT_DATE()),-1,"DAY"))),hits),hits.customDimensions) 
WHERE hits.eventInfo.eventAction = "EventName" 
ORDER BY value DESC 

Klärungen:

Beispiel index_number wäre: '135' Beispiel Eventname wäre: 'BookedFlight'

ich plane, die sam zu nutzen Der Ansatz, andere verschachtelte Daten, wie z. B. Geräte-Browser, Plattform usw., zu erhalten, um sie mit unseren eigenen Datenbankdaten zu verknüpfen. visitorId

danke!

Antwort

0

Wie funktioniert JSON_EXTRACT in BigQuery?

BigQuery's JSON functions geben Ihnen die Möglichkeit, die Werte innerhalb Ihrer gespeicherten JSON-Daten zu finden, die von JSONPath ähnlichen Ausdrücken.

Aber für Ihr Beispiel/Use-Case sehe ich keine Notwendigkeit darin überhaupt!
Versuchen unter

SELECT 
    visitId, 
    hits.customDimensions.value AS value 
FROM 
    FLATTEN(FLATTEN((
    SELECT * 
    FROM TABLE_DATE_RANGE([103264765.ga_sessions_], TIMESTAMP("2016-07-14"), DATE_ADD(TIMESTAMP(CURRENT_DATE()),-1,"DAY"))),hits),hits.customDimensions) 
WHERE hits.eventInfo.eventAction = "BookedFlight" 
AND hits.customDimensions.index = 135 
ORDER BY value DESC 

in obigem einfachen Fall, Sie brauchen nicht einmal zusätzliche Abflachung, so unten arbeiten zu

SELECT 
    visitId, 
    hits.customDimensions.value AS value 
FROM TABLE_DATE_RANGE([103264765.ga_sessions_], TIMESTAMP("2016-07-14"), DATE_ADD(TIMESTAMP(CURRENT_DATE()),-1,"DAY")) 
WHERE hits.eventInfo.eventAction = "BookedFlight" 
AND hits.customDimensions.index = 135 
ORDER BY value DESC 
+0

Dank Mikhail! Das ist genau das, was ich bis jetzt benutzt habe. Das Problem, das ich mit diesem Ansatz habe, ist, dass einige meiner Ereignisse mehrere Parameter enthalten, an denen ich interessiert bin. Ich habe versucht, eine Reihe von Unterabfragen zu verbinden, die verschiedene customDimension Indxes abfragen, aber sobald ich zu drei komme, beginnt alles sehr langsam. Ich möchte lernen, Werte mit verschachtelten Abfragen mit JSON-Funktionen abzufragen, um auf Werte zuzugreifen, die in JSON-Objekten gespeichert sind, um nach fullVisitorId oder visitId zu gruppieren. Ein weiterer Anwendungsfall wäre: Welches Gerät wird pro Ereignis verwendet? Ich finde, dass die Verwendung von JSON-Funktionen viel besser ist als –

+1

1) bisher, mit allem, was ich von dir sehe, Frage und Kommentare - es gibt keine Verwendung von JSON-Funktionen in Ihrem Fall! Bitte haben Sie Verständnis - JSON-Funktionen können verwendet werden, wenn Sie Ihren json als String in einem Feld gespeichert haben, was nicht Ihr Fall ist, es sei denn, mir fehlt etwas! Ich empfehle Ihnen, lesen Sie wieder in meiner Antwort zu verstehen, wann und wie JSON-Funktionen verwendet werden können. 2) Ich empfehle Ihnen, eine neue Frage zu stellen, die sich darauf konzentriert, zu erklären, was genau Ihre Aufgabe ist, was Ihre aktuelle Anfrage ist und welche Art von Problemen es gibt. - damit können wir Ihnen vielleicht helfen. –