为什么BigQuery在连接两个示例GitHub表的查询中返回一个空白列?

时间:2018-04-24 04:56:14

标签: google-bigquery

我正在使用这个SQL代码连接两个表。我的目标是在内容以字符串“import”开头时获取repo_name,内容和路径。但最后一栏是空的。这是我的查询中的错误,还是BigQuery中的错误?

SELECT
  contents.id,
  files.repo_name
  files.path,
  contents.content
FROM
  [bigquery-public-data:github_repos.sample_contents] as contents
  JOIN [bigquery-public-data:github_repos.sample_files] as files
ON files.id = contents.id
WHERE
REGEXP_MATCH (contents.content, r'^import')
LIMIT
  100;

(我假设提交哈希是两个表中的ID。这没有记录,但它似乎返回数据。)

结果如下:

Row | contents_id | files_path | contents_content | <blank>
1     33249e...     jbandu..     import Ember...    <blank>
2     53d65e...     pubpub...    import React...    <blank>
...more lines...

如果我注意到空白,则该列未标记。并且,那里没有数据。看起来查询是从错误的第二列开始的;不应该是files_repo_name吗?我已经使用每个表中的正确名称验证了我的select语句是否正确。

1 个答案:

答案 0 :(得分:1)

如果我一直滚动到查询结果的右侧,我会看到一个空白单元格,但它并不代表一列。响应的JSON表示也不包含额外的列。如果您运行files.repo_name之类的查询,则结果将包含一个列,其右侧有一个空白占位符。

上面的查询有一个奇怪的事情是它将files.path别名为files.repo_name,因为#standardSQL SELECT id, files.repo_name, files.path, contents.content FROM `bigquery-public-data.github_repos.sample_contents` as contents JOIN `bigquery-public-data.github_repos.sample_files` as files USING (id) WHERE REGEXP_CONTAINS (contents.content, r'^import') LIMIT 100; 之后没有逗号。我通常在BigQuery中使用标准SQL,您可以用这种形式表达相同的查询:

"start": "webpack -d --watch ws --spa public/index.html",