2017-08-04 11 views
0

多分私には明らかになっていないかもしれませんが、これについて正しい質問を得られません。BigQueryのキー値フィールドを繰り返し照会する

データ行ごとに複数のキー値のペア(繰り返しデータ)があります(例: {"row1": "data1"、 "row2": "data2"、 "row3":{"key1": "value1 "key2": "value2"}、 "row4":{"key1A": "value1A"、 "key2A": "value2A"}

すべてのレコードに対して「value1」を取得しようとしていますrow3 "key1"が設定されています。これはrow4と同じです。したがって、key2Aが設定されている場合は、対応する値を取得してください。

私は自分の問題を適切に記述してください。

EDIT:より良く理解するため 、これは、1つのデータ列の例スキーマである:

{ "exrow":"Example Data", "date":"2017-08-07", "hi": [ "cd":[ {"index":1,"value":"car"}, {"index":2,"value":"boat"}, {"index":3,"value":"green"}, {"index":4,"value":"blue"} ], [...] ], [...] }

それによって'hi''cd'RECORD, REPEATEDあります。

だから、私は何を取得しようとすると、以下の結果の行です: Example Data | 2017-08-07 | boat | blue

クエリ - ちょうど理解するために - 次のようになります。

SELECT exrow, date, (SELECT hi.cd.value WHERE hi.cd.index=2), (SELECT hi.cd.value WHERE hi.cd.index=4) FROM table

だから私は、2つの繰り返し照会しようとしています(ネストされた?)データ行に対応する条件を設定します。

私はそれを今より良く説明したいと思う。提供されたデータと

+1

ない明らかに非常に便利です - あなたのテーブルのスキーマは何ですか? –

+0

私の投稿を編集してよりよく説明しようとしました – kRuzeFiX

+0

あなたが提供したスキーマは、BigQueryのARRAYタイプでは 'Nested Arrays'がサポートされていない可能性が高いです - https://cloud.google.com/bigquery/docs/reference/standard -sql/data-types#宣言型 - 配列型 –

答えて

0

私の最高の推測、:

#standardSQL 
WITH table AS (
SELECT [STRUCT('key1' AS key,2 AS value), ('key2', 3), ('key3', 8)] arr 
) 

SELECT (SELECT value FROM UNNEST(arr) WHERE key='key2') result 
FROM `table` 
WHERE EXISTS(SELECT value FROM UNNEST(arr) WHERE key='key3' AND value=8) 
+0

私はまだそれを理解していないので、私は自分の投稿を編集し、それをよりよく説明しようとしました。 – kRuzeFiX

+0

私は自分の問題をJoinsとFLATTENの組み合わせで解決することができました。しかし、あなたのコメントは私が正しい軌道に乗る理由でした。ありがとう! – kRuzeFiX

0

あなたは以下の1を見ることができます:

SELECT 
address.emailAddress, address.options.changeSource, address.options.type 
from addresses.address 
where address.options.type="main" or address.options.type="second" 
group by address.emailAddress, address.options.changeSource, address.options.type 

住所、EMAILADDRESSとオプションが繰り返されるフィールド。

最初に、繰り返されたフィールドをどのように扱うことができるかは、単純に「グループ化」です。

2番目のオプションはFLATTENです。詳細情報については

私は大きなクエリの参照をお勧めしますが -

https://cloud.google.com/bigquery/docs/reference/legacy-sql#flatten

+0

ありがとう、私はジョインとフラットンの組み合わせで自分の問題を解決することができました。 – kRuzeFiX

関連する問題