Könnten Sie mir bitte ein bisschen mit Bigquery's Syntaxfrage helfen, bitte? Ich versuche zu verstehen, warum (und wie es zu beheben) diese Standardsql-Abfrage gibt 2 Zeilen zurück, während dieser Legacysql man nur 1 zurückgibt (und ich erwarte nur 1).Warum Bigquery's Standardsql gibt mehrere Zeilen während Legacysql nur eine?
StandardSQL
SELECT
hits2.transaction.transactionId as transactionId
FROM `ga-export-TTTT.1234567890.ga_sessions_*`
,UNNEST (hits) as hits2
WHERE
hits2.transaction.transactionId = '03971163'
LegacySQL
select
hits.transaction.transactionId
FROM
TABLE_DATE_RANGE([ga-export-TTTT:1234567890.ga_sessions_], TIMESTAMP('2016-09-01'), TIMESTAMP('2017-02-14'))
WHERE
hits.transaction.transactionId = '03971163'
Nach Hilfe Lesen Ich versuchte auch dieses StandardSQL eine mit den gleichen zwei Zeilen in den Ergebnissen:
select
title
from
(
SELECT
ARRAY(SELECT transaction.transactionId FROM UNNEST(hits)
WHERE transaction.transactionId = '03971163') AS title
FROM `ga-export-TTTTT.1234567890.ga_sessions_*`
)
WHERE ARRAY_LENGTH(title) > 0;
Ich würde mich über jede Hilfe freuen.
Dank @Elliott. Leider funktioniert das nicht. Beide Beispiele geben eine enorme Anzahl an Zeilen zurück, sollten aber nur eine sein. – user912830823
Die von mir angegebene Abfrage gibt alle Elemente dieses Arrays zurück, die mit der Transaktions-ID übereinstimmen. Wenn Sie nur ein Element des Arrays möchten, verwenden Sie stattdessen 'LIMIT'; Siehe meine Bearbeitung. –
Hey @Elliot, meine Frage war, wie man Ergebnisse erhalten, ähnlich wie ich mit legacysql. Limit 1 funktioniert in diesem Fall nicht. – user912830823