首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用SQL的Google大查询:当有多个受让人时,将受让人姓名与协调的受让人姓名相关联

使用SQL的Google大查询:当有多个受让人时,将受让人姓名与协调的受让人姓名相关联
EN

Stack Overflow用户
提问于 2017-12-31 03:58:48
回答 1查看 187关注 0票数 1

我的目标是使用标准的SQL从谷歌的Big Query patents-public-data.patents.publications_201710表创建一个表,其中有一行用于publication_number、assignee和assignee_harmonized.name,其中publication_number对具有多个assignee的记录重复。下面是我想要的输出示例:

publication_number|assignee|assignee_harm

US-6044964-A|索尼公司|索尼公司

US-6044964-A|数字音频光盘公司|数字音频光盘公司

US-8746747-B2|IPS公司-焊接部|IPS公司-焊接部

US-8746747-B2|空|MCPHERSON TERRY R

根据在this post中找到的UNNEST建议,我尝试了以下查询

代码语言:javascript
复制
#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')

但是,输出显示如下:

row|publication_number|assignee|assignee_harm

1|US-6044964-A|索尼公司|索尼公司

|Digital Audio Disc Corporation

2|US-6044964-A|索尼公司|数字音频光盘公司

|Digital Audio Disc Corporation

3|US-8746747-B2|IPS公司-焊接部|MCPHERSON TERRY R

4|US-8746747-B2|IPS公司-焊接部|IPS公司-焊接部

您可以看到,“索尼公司”的受让人与第2行中的“数字音频光盘公司”协调名称有不恰当的关联,类似的问题出现在第3行中。此外,第1行和第2行各包含两行,但不重复publication_number标识符。我看不到一种简单的方法来做到这一点,因为"assignee“的数量并不总是等于"assignee_harmonized.name”的数量,它们也不总是以相同的顺序出现(否则我可以尝试创建两个表并以某种方式合并它们)。另一方面,必须有一种方法将“受让人”变量与其协调值"assignee_harmonized.name“相关联,否则就失去了协调值的目的。当有多个"assignee“或多个"assignee_harmonized.name”或同时有多个“assignee”和/或多个“assignee”时,您能推荐一个查询(或一组查询)来生成所需的输出吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-31 20:27:58

您查询的是一个字符串和两个数组-整个过程基本上是这样的:

代码语言:javascript
复制
  {
    "publication_number": "US-8746747-B2",
    "assignee": [
      "IPS Corporation—Weld-On Division"
    ],
    "assignee_harm": [
      "MCPHERSON TERRY R",
      "IPS CORPORATION—WELD ON DIVISION"
    ]
  }

所以这就是数据,你需要决定如何处理它们的组合……要么你交叉连接所有东西:

代码语言:javascript
复制
#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')

。。这为您提供了关系数据..或者将其保留为两个单独的数组:

代码语言:javascript
复制
#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中的表。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48037397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档