Google bigquery 源变量';s数据集id

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

假设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 * 
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`
'''