Google bigquery 通配符表中无法识别的列
我需要在匹配某些命名方案的所有表上查询相同的聚合统计:Google bigquery 通配符表中无法识别的列,google-bigquery,Google Bigquery,我需要在匹配某些命名方案的所有表上查询相同的聚合统计: SELECT SUBSTR(CONCAT('20', _TABLE_SUFFIX), 0, 10) AS date, CASE WHEN ENDS_WITH(_TABLE_SUFFIX, 'mobile') THEN 'mobile' ELSE 'desktop' END AS client, APPROX_QUANTILES(bytesJS,1000)[OFFSET(500)] AS p50 FROM
SELECT
SUBSTR(CONCAT('20', _TABLE_SUFFIX), 0, 10) AS date,
CASE
WHEN ENDS_WITH(_TABLE_SUFFIX, 'mobile') THEN 'mobile'
ELSE 'desktop'
END AS client,
APPROX_QUANTILES(bytesJS,1000)[OFFSET(500)] AS p50
FROM
`httparchive.runs.20*`
WHERE
ENDS_WITH(_TABLE_SUFFIX, '_pages')
OR ENDS_WITH(_TABLE_SUFFIX, '_pages_mobile')
GROUP BY
1,
2
ORDER BY
1,
2
但是,查询失败,出现错误:无法识别的名称:bytesJS at[7:20]
应该有大约150个表与查询匹配。以下是其中一个表的架构:
bytesJS
是一个有效的列名,但由于无法识别而失败。替换不同的已知列时出现相同错误。我不确定这是否是使用表通配符的直接结果
我会用遗留的SQL重写它,看看它是否有效,但我的查询需要选择表元数据
这是否与通配符不兼容 这是一个有效的版本:
#standardSQL
SELECT
SUBSTR(CONCAT('20', _TABLE_SUFFIX), 0, 10) AS date,
CASE
WHEN ENDS_WITH(_TABLE_SUFFIX, 'mobile') THEN 'mobile'
ELSE 'desktop'
END AS client,
APPROX_QUANTILES(bytesJS,1000)[OFFSET(500)] AS p50
FROM
`httparchive.runs.2017_05_15_pages*`
#WHERE
#ENDS_WITH(_TABLE_SUFFIX, '_pages')
#OR ENDS_WITH(_TABLE_SUFFIX, '_pages_mobile')
GROUP BY
1,
2
ORDER BY
1,
2
发生了什么:
包含一些没有httparchive.runs.20*
列的表,因此查询的其余部分不考虑该列bytesJS
- 当查询查找
时,更改查询模式已经太晚了(\u TABLE\u SUFFIX,'u pages')或(\u TABLE\u SUFFIX,'u pages\u mobile')
table glob在这里不起作用,您必须运行一个典型的表并集FROM prefix*