美文网首页
BigQuery在WebUI中使用自定义变量

BigQuery在WebUI中使用自定义变量

作者: Houtasu | 来源:发表于2020-11-24 16:20 被阅读0次

    Google的bigquery是一个强大的云数据库,支半结构化数据,TB级单表的查询,自动扩充什么的,反正就是很NB。除了必须要翻墙和贵之外。。。
    在bigquery的webUI界面,可以编写SQL并查询,同时会实时的提示你本次查询所需的数据量,因为是按照这个数据量的大小算钱的。
    然后BigQuery的SQL语法和标准SQL差不多。具体查看: Bigquery官方SQL文档

    1 在WebUI中使用自定义变量

    这个主要是在编写sql中有些值反复出现,比如日期范围这种,一个SQL写的很长的话可能会出现好几次同一个时间变量。
    然后需要改变这些变量的时候就会很麻烦,每个地方都要去改一下。
    所以自定义变量还是很有必要的。
    Bigquery中支持脚本式的SQL查询,具体查看这篇文档: 使用标准 SQL 编写脚本(既然都用了Bigquery了,默认是会翻墙的)
    所以就有第一种自定义变量的方法:

    DECLARE a int64 DEFAULT 2;
    WITH
      Players AS (
      SELECT 'gorbie' AS account, 29 AS level, 'red' AS guild  UNION ALL
      SELECT  'junelyn', 2, 'blue'  UNION ALL
      SELECT 'corba', 43, 'green')
    SELECT
      *
    FROM
      Players
    WHERE
      level>a
    

    使用DECLARE声明一个变量,类型及默认值,然后在后面SQL语句中就可以使用这个变量了。
    但是这样有一个问题,就是不能给你本次计算流量的预估值了。


    如果你知道查询的数据量不大的话,那倒无所谓。
    但是有的表几个T,查一次就是几十刀出去了,没有提示的话还是不方便的。
    那么还有第二种方法,使用with子句:
    WITH
      Variable as (select 1 as a),
      Players AS (
      SELECT 'gorbie' AS account, 29 AS level, 'red' AS guild  UNION ALL
      SELECT  'junelyn', 2, 'blue'  UNION ALL
      SELECT   'corba', 43, 'green')
    SELECT
      *
    FROM
      Players, Variable 
    WHERE
      level > a
    

    把变量直接定义为一个子查询的一个值,这样在下面的语句中也可以直接引用这样变量,
    而且可以正确的算出本次消耗的流(我这没查表所以是0B,真查了是对的哈)。
    但是也有个麻烦的地方,就是要在每一个FROM后跟上这个子查询的名称,它才能获取到这个子查询里的变量
    两种方法都不是很完美,但是至少也比一个一个的改变量要好多了。

    相关文章

      网友评论

          本文标题:BigQuery在WebUI中使用自定义变量

          本文链接:https://www.haomeiwen.com/subject/ykoiiktx.html