Google bigquery 源变量';s数据集id
假设11月10日的数据是Google bigquery 源变量';s数据集id,google-bigquery,Google Bigquery,假设11月10日的数据是 美国:project\u 123.123456.数据\u 20201110 加拿大:项目_123.123457.数据_20201110 巴西:project_123.123458.data_20201110 您将如何创建查询,以便根据国家/地区更改数据集id? 像这样的东西,但这显然不起作用 DECLARE USA, CAN, BRA INT64; SET (USA, CAN, BRA) = (123456, 123457, 123458); SELECT * FR
美国:
project\u 123.123456.数据\u 20201110
加拿大:
项目_123.123457.数据_20201110
巴西:
project_123.123458.data_20201110
您将如何创建查询,以便根据国家/地区更改数据集id?像这样的东西,但这显然不起作用
DECLARE USA, CAN, BRA INT64;
SET (USA, CAN, BRA) = (123456, 123457, 123458);
SELECT *
FROM `project_123.x.data_20201110`
WHERE x = USA
我不想记住哪个数字代表哪个国家,只想创建一些变量,然后忘记它。使用_TABLE_后缀,我们可以更改表名,但这里我想更改数据集的id。下面是您可以选择的选项之一
DECLARE USA, CAN, BRA INT64;
DECLARE x STRING;
SET (USA, CAN, BRA) = (123456, 123457, 123458);
SET x = 'USA';
EXECUTE IMMEDIATE '''
SELECT *
FROM `project-123.''' ||
CASE x
WHEN 'USA' THEN USA
WHEN 'CAN' THEN CAN
WHEN 'BRA' THEN BRA
ELSE USA
END
|| '''.data_20201110`
'''
另一个(不太详细)选项-
非常感谢。后续问题:在本例中,右下角显示:“警告:无法为脚本计算已处理的字节数。”。有什么解决办法吗?如果知道我是否做了一些愚蠢的事情,并且在做之前意外地扫描了千兆字节的数据,那将是非常有用的
DECLARE x, USA, CAN, BRA INT64;
SET (USA, CAN, BRA) = (123456, 123457, 123458);
SET x = USA;
EXECUTE IMMEDIATE '''
SELECT *
FROM `project-123.''' || x || '''.data_20201110`
'''