我正在使用这个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语句是否正确。
答案 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",