【问题标题】:Executing existing parametrised BigQuery view from bq cmd tool从 bq cmd 工具执行现有的参数化 BigQuery 视图
【发布时间】:2018-11-05 05:11:12
【问题描述】:

如何在不发送视图查询的情况下通过传递参数 (@param) 执行现有 BigQuery parametrized view

我想为我的自定义参数执行带有占位符的现有视图。

我保存在 BigQuery 中 project.dataset.view 的简约视图:

select * from `project.dataset.table`  
where column = @x

我的bq cmd 看起来像:

bq --location=EU query --use_legacy_sql=False \
--parameter='x:INT64:100' \
--destination_table="dev.view_result" "[HERE IS THE SAME VIEW COPIED]"

就像我没有执行现有视图一样,我正在创建一个新的选择查询(新视图)。

是否可以这样称呼它:

bq --location=EU query --use_legacy_sql=False \
--parameter='x:INT64:100' \
--destination_table="dataset.view_result"
--view=[VIEW_URL like dataset.view]

【问题讨论】:

    标签: view google-bigquery bigquery-standard-sql sql-parametrized-query


    【解决方案1】:

    BigQuery 尚不支持带参数的视图 - 请参阅相关feature request

    【讨论】:

    • 但我想现在可以将 select * from project.dataset.table 保存为 myview 在 bigquery 数据集中,然后执行 select * from myview where column = 5 (tableau)。过滤器将被下推到第一个 select 语句。
    • 当然。应该管用。请记住 - 因为SELECT * 将进行整个表扫描
    • 好的,但是如果您使用select * from table 并将其保存在BQ 中的视图中,然后您使用select * from view where partitioning_ts_or_date_field = ... 查询视图,那么过滤器将立即推送到第一个选择语句,您就赢了'不要扫描整个表,因为只会扫描那一天。这是客户端 (tableau) 指定分区而无需从 bigquery 视图复制/粘贴代码的解决方法。相反,他们重用视图的代码并只定义分区。
    猜你喜欢
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-15
    • 2014-04-21
    • 1970-01-01
    • 2019-11-30
    相关资源
    最近更新 更多