아마도 나는 분명하지 않지만 이것에 대한 올바른 쿼리를 얻지 못합니다.
데이터 행당 여러 키 값 쌍 (반복 데이터)이 있습니다. 예 : { "row1": "data1", "row2": "data2", "row3": { "key1": "value1", "key2" : "value2"}, "row4": { "key1A": "value1A", "key2A": "value2A"}}
row3 "key1"이 설정된 모든 레코드에 대해 "value1"을 얻으려고합니다. row4와 동일하게 결합되었으므로 key2A가 설정되어 있으면 해당 값을 가져 오십시오.
내 문제를 제대로 설명했으면합니다.
편집 : 더 나은 이해를 위해 이것은 하나의 데이터 행의 예제 스키마입니다.
{ "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
그래서 두 개의 반복 된 (중첩 된?) 데이터 행을 해당 조건으로 쿼리하려고합니다.
이제 더 잘 설명했으면합니다.
제공된 데이터와 함께 내 가장 좋은 추측 :
#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)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다