谷歌';s使用SQL的大查询:当有多个受让人时,关联受让人名称和协调受让人名称
我的目标是使用标准SQL从Google的大查询patents-public-data.patents.publications_201710表创建一个表,该表中有一行用于出版物编号、受让人和受让人名称,其中出版物编号对具有多个受让人的记录重复。以下是我所需输出的示例: 出版物编号|受让人|受让人| US-6044964-A |索尼公司|索尼公司 US-6044964-A |数字音频光盘公司|数字音频光盘公司 US-8746747-B2 | IPS公司分部焊接| IPS公司分部焊接 US-8746747-B2 |空|麦克弗森特里R 我根据在中找到的最不重要的建议尝试了以下查询 但是,输出如下所示: 行|出版物|编号|受让人|受让人| 1 | US-6044964-A |索尼公司|索尼公司 ||数字音频光盘公司| 2 | US-6044964-A |索尼公司|数字音频光盘公司 ||数字音频光盘公司| 3 | US-8746747-B2 | IPS公司焊接分部|麦克弗森特里R 4 | US-8746747-B2 | IPS公司分部焊接| IPS公司分部焊接谷歌';s使用SQL的大查询:当有多个受让人时,关联受让人名称和协调受让人名称,sql,google-bigquery,Sql,Google Bigquery,我的目标是使用标准SQL从Google的大查询patents-public-data.patents.publications_201710表创建一个表,该表中有一行用于出版物编号、受让人和受让人名称,其中出版物编号对具有多个受让人的记录重复。以下是我所需输出的示例: 出版物编号|受让人|受让人| US-6044964-A |索尼公司|索尼公司 US-6044964-A |数字音频光盘公司|数字音频光盘公司 US-8746747-B2 | IPS公司分部焊接| IPS公司分部焊接 US-8746
您可以看到,“Sony Corporation”受让人与第2行中的“DIGITAL AUDIO DISC CORP”协调名称不恰当地关联,第3行中出现了类似问题。此外,第1行和第2行各包含两行,但不重复出版物编号标识符。我看不到一个简单的方法来实现这一点,因为“assignee”的数量并不总是等于“assignee_.name”的数量,而且它们也不总是以相同的顺序出现(否则我可以尝试创建两个表并以某种方式合并它们)。另一方面,必须有一种方法将“assignee”变量与其协调值“assignee_conmonized.name”关联起来,否则就失去了获得协调值的目的。当存在多个“assignee”或多个“assignee\u.name”或两者同时存在时,您可以建议一个查询(或一组查询)来生成所需的输出吗?您正在查询一个字符串和两个数组-整个过程基本上如下所示:
{
"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中的表
#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')