Ich versuche, nach einer Zeile zu suchen, die bestimmte Schlüsselwertpaare in einem Array hat. Eine Zeile in meiner BigQuery-Tabelle würde ungefähr so aussehen.Wie finde ich Elemente in einem Array in BigQuery
{
"ip": "192.168.1.1",
"cookie" [
{
"key": "apple",
"value: "red"
},
{
"key": "orange",
"value: "orange"
},
{
"key": "grape",
"value: "purple"
}
]
}
Ich dachte über impliziten UNNEST oder CROSS JOIN wie die folgenden verwenden, aber es hat, weil es nicht funktionierte Auseinanderschieben nur mehr verschiedene Reihen schaffen würde.
SELECT ip
FROM table t, t.cookie c
WHERE (c.key = "grape" AND c.value ="purple") AND (c.key = "orange" AND c.value ="orange")
This link ist ganz in der Nähe zu dem, was ich tun will, es sei denn sie legacy SQL
verwenden und nicht standardSQL
Arbeitete wie ein Charme, danke. Ich wusste nicht, dass Sie Unterabfragen auch in WHERE-Bedingungen schreiben können – dorachan2010
@ dorachan2010 - ja, aber bitte beachten Sie: 'Korrelierte Unterabfragen, die auf andere Tabellen verweisen, werden nur unterstützt, wenn sie dekorreliert werden können, z JOIN' Sie können http://stackoverflow.com/a/43006968/5221944 überprüfen, um zu sehen, wie korrelierte Abfrage in Join umgewandelt wurde, um Fehlermeldung zu vermeiden –
Ja, das versuche ich immer noch für SQL und BigQuery SQL zu verstehen ... der Umfang der Referenzen in jeder der Erklärung .. – dorachan2010