Bigqueryのstandardsql構文の質問でちょっとお手伝いできますか? 私はなぜこの問題を解決しようとしていますが、この標準SQLクエリは2行を返しますが、このlegacysqlは1を返します(そして私はただ1つしか期待しません)。Bigqueryのstandardsqlが複数の行を返すのはなぜですか?legacysqlは1つだけですか?
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'
ヘルプを読んだ後、私はまた、結果には同じ2つの行で、このStandardSQL 1を試してみました:
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;
これに関する助けに感謝します。
おかげ@Elliottと同じリストにテーブルをフィルタリングするには、以下試してみてください。残念ながら、これは動作しません。どちらの例も、膨大な量の行を返しますが、ただ1つでなければなりません。 – user912830823
私が提供したクエリは、あなたが求めたものであるトランザクションIDと一致する配列のすべての要素を返します。配列の要素を1つだけ使用したい場合は、代わりに 'LIMIT'を使います。私の編集を参照してください。 –
ちょっと@Elliot、私の質問は、私がlegacysqlを使って得たものと似た結果を得る方法に関するものでした。この場合、Limit 1を使用することはできません。 – user912830823