【问题标题】:Is there any way to execute a dynamic query in bigquery?有没有办法在 bigquery 中执行动态查询?
【发布时间】:2020-03-05 14:16:28
【问题描述】:

伙计们,我需要在表中进行动态选择,使用 from 之后的变量,如下所示: SELECT * FROM @table。

如果有人可以这样做,请帮助!

tks!

我在下面使用这个查询:

DECLARE id INT64;
    DECLARE contador INT64 DEFAULT 1;
    DECLARE name_table STRING;
    DECLARE query STRING;       

    CREATE OR REPLACE TABLE `crm-prod-254714.work.controle_tabelas`
    AS
    SELECT DISTINCT CONCAT('`', table_catalog, '.', table_schema, '.', table_name, '`') as tabela
                  ,ROW_NUMBER() OVER() AS ROWID
    FROM ntk.INFORMATION_SCHEMA.TABLES;

    SET id = (SELECT MAX(ROWID) FROM `crm-prod-254714.work.controle_tabelas`);

    WHILE (contador <= id) DO

    SET name_table = (SELECT tabela FROM `crm-prod-254714.work.controle_tabelas` WHERE rowid = 1);

    SET QUERY = CONCAT('SELECT * FROM ', name_table, ';');

    EXECUTE QUERY;

    SET contador = contador+1;

    END WHILE

【问题讨论】:

  • 变量名必须有一个@作为T-SQL中的第一个字符
  • 您检查过 bigquery 中的新脚本功能吗google.com/amp/s/cloudblog.withgoogle.com/products/…
  • 丹尼斯,如果我在前面加上@,它就不起作用了......
  • sramalingam,我在这里问之前检查过这个,但没有说任何关于执行变量的内容):
  • 您不能仅在 BigQuery 中执行此操作,但您可以在您选择的任何客户端中轻松执行此操作!你有没有考虑过?如stackoverflow.com/questions/60325569/…

标签: sql sql-server dynamic google-bigquery logic


【解决方案1】:

截至 2020 年 5 月 20 日,BigQuery released 动态 SQL 功能为您实现目标。

Dynamic SQL 现在作为测试版在所有 BigQuery 区域提供。动态 SQL 允许您在运行时动态生成和执行 SQL 语句。如需更多信息,请参阅EXECUTE IMMEDIATE

对于您的场景,您只需要更改一行:

    EXECUTE QUERY;
=>
    EXECUTE IMMEDIATE QUERY;

【讨论】:

    猜你喜欢
    • 2019-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-15
    • 1970-01-01
    • 1970-01-01
    • 2018-06-02
    • 2014-06-03
    相关资源
    最近更新 更多