2017-03-24 11 views
2

、私はこのようなスキーマがある場合:人は、複数の子供や子供たちが繰り返しに格納されていることができ例えばレコードフィールドは、標準SQL(グーグルのBigQuery)を使用して値が含まれている場合は、チェック

[{ 
    "name": "fullName", 
    "type": "string", 
    "mode": "required" 
}, 
{ 
    "name": "children", 
    "type": "record", 
    "mode": "repeated", 
    "fields": [ 
    { 
     "name": "name", 
     "type": "string", 
     "mode": "nullable" 
    }, 
    { 
     "name": "gender", 
     "type": "string", 
     "mode": "nullable" 
    }, 
    { 
     "name": "age", 
     "type": "integer", 
     "mode": "nullable" 
    }] 
}] 

をchildren.name、children.gender、およびchildren.ageを使用してアクセスできます。 この人物に複数の子があり、これらの行のすべてが1つの行番号を共有している場合、この人物に複数の行が表示されることがあります。

この表から、ある行の子の名前の1つが特定の値と一致する行をすべて選択したいと思っていますが、children.nameのようなものかもしれません。

答えて

2

私はあなたの質問を読んでいます - 特定の名前の子供を持つ両親を選択するには?

あなたはダミーデータと上記テストすることができます
#standardSQL 
SELECT * 
FROM yourTable 
WHERE 'child1' IN (SELECT name FROM UNNEST(children)) 

#standardSQL 
WITH yourTable AS (
    SELECT 
    'parentA' AS fullName, 
    [STRUCT<name STRING, gender STRING, age INT64> 
     ('child1', 'm', 10), ('child2', 'f', 11), ('child3', 'f', 8) 
    ] AS children UNION ALL 
    SELECT 'parentB', 
    [STRUCT<name STRING, gender STRING, age INT64> 
     ('child4', 'm', 10), ('child5', 'f', 11), ('child6', 'f', 8)] UNION ALL 
    SELECT 'parentC', 
    [STRUCT<name STRING, gender STRING, age INT64> 
     ('child7', 'm', 10), ('child1', 'f', 11), ('child8', 'f', 8)] 
) 
SELECT * 
FROM yourTable 
WHERE 'child1' IN (SELECT name FROM UNNEST(children)) 
+0

以下のようにはい、これは私が欲しいものです。ありがとうございました! – Isa

関連する問題