2017-12-30 26 views
1

がある場合、私の目標は、1行があり、標準SQLを使用して、Googleのビッグクエリの特許・公開data.patents.publications_201710テーブルからテーブルを作成することです譲受人名と調和譲受人名を関連付けますpublication_numberのassigneeとassignee_harmonized.nameは、複数の担当者を持つレコードに対してpublication_numberが繰り返される場所です。 |譲受人| assignee_harmGoogleのビッグクエリ:複数の譲受人

米国-6044964-A |ソニー株式会社| SONY CORP

米国-6044964-A |デジタルオーディオディスク株式会社|デジタルオーディオDISC

publication_number:ここに私の所望の出力の例です。 CORP

US-8746747-B2 | IPS株式会社-ウェルドオン課| IPS CORPORATION-WELD ONのDIVISION

US-8746747-B2 |ヌル| MCPHERSON TERRY R

は私がしかしthis post

#standard SQL 
SELECT 
    p.publication_number, 
    p.assignee, 
    a.name AS assignee_harm 
FROM 
    `patents-public-data.patents.publications_201710` AS p, 
    UNNEST(assignee_harmonized) AS a 
WHERE 
    p.publication_number IN ('US-6044964-A', 
    'US-8746747-B2') 

で見つかったUNNEST提案のオフに基づいて、次のクエリを試してみた、出力は次のように表示されます:

行| publication_number |譲受人| assignee_harm

1 | US-6044964-A |ソニー株式会社| SONY CORP

||デジタルオーディオディスクコーポレーション|

2 |米国-6044964-A |ソニー株式会社|デジタルオーディオのDISC CORP

||デジタルオーディオディスクコーポレーション|

3 | US-8746747-B2 | IPS株式会社-ウェルドオン課| MCPHERSON TERRY R

4 | US-8746747-B2 | IPS株式会社-ウェルドオン課| IPS CORPORATION-WELDオンDIVISION

は、あなたはまた、1行目と2行目は2行が含まれ、それぞれが、ドン「はソニー株式会社」譲受人が不適切同様の問題は、行3に登場すると2行目に「DIGITAL AUDIO DISC CORP」調和のとれた名前に関連付けられていることがわかりますpublication_number識別子を繰り返します。 「譲受人」の数は、常に「assignee_harmonized.name」の数に等しくないので、私はこれを行うための簡単な方法が表示されていないと、彼らはいつもそうでない場合、私は2つのテーブルを作成してみてください(同じ順序で表示されません。何らかの形でそれらをマージする)。一方、 "assignee"変数をその調和値 "assignee_harmonized.name"に関連付ける方法がなければならない。さもなければ、調和した値を持つ目的は失われる。複数の「担当者」または複数の「assignee_harmonized.name」またはその両方がある場合に、望ましい出力を生成するクエリ(またはクエリセット)を提案してください。

答えて

2

あなたは、文字列と二つの配列のために照会している - 全体のものは基本的に次のようになります。

{ 
    "publication_number": "US-8746747-B2", 
    "assignee": [ 
     "IPS Corporation—Weld-On Division" 
    ], 
    "assignee_harm": [ 
     "MCPHERSON TERRY R", 
     "IPS CORPORATION—WELD ON DIVISION" 
    ] 
    } 

だから、データだとあなたは何とかそれらの組み合わせを治療するための方法を決定する必要があります...あなたは何でも参加してください:

#standard SQL 
SELECT 
    p.publication_number, 
    assignee, 
    assignee_harmonized.name AS assignee_harm 
FROM 
    `patents-public-data.patents.publications_201710` AS p 
    ,p.assignee assignee 
    ,p.assignee_harmonized AS assignee_harmonized 
WHERE 
    p.publication_number IN ('US-6044964-A','US-8746747-B2') 

..あなたにはリレーショナルデータがあります。

#standard SQL 
SELECT 
    p.publication_number, 
    assignee, 
    ARRAY((SELECT name FROM p.assignee_harmonized)) AS assignee_harm 
FROM 
    `patents-public-data.patents.publications_201710` AS p 
WHERE 
    p.publication_number IN ('US-6044964-A','US-8746747-B2') 

この入れ子の結果をbqのテーブルとして保存することもできます。

関連する問題