BigQuery在WebUI中使用自定义变量

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后跟上这个子查询的名称,它才能获取到这个子查询里的变量
两种方法都不是很完美,但是至少也比一个一个的改变量要好多了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • SQL 优化 在应用的的开发过程中,由于初期数据量小,开发人员写 SQL 语句时更重视功能上的实现, 但是当应用系...
    安静点就睡吧阅读 2,312评论 0 2
  • 前言 这里筑梦师,是一名正在努力学习的iOS开发工程师,目前致力于全栈方向的学习,希望可以和大家一起交流技术,共同...
    筑梦师Winston阅读 26,231评论 80 514
  • 1.一些开放性题目 1.自我介绍:除了基本个人信息以外,面试官更想听的是你与众不同的地方和你的优势。 2.项目介绍...
    55lover阅读 3,816评论 0 6
  • 最近面试当中被问到很多SQL的问题,有些正好记得概念,有些对概念比较模糊,因此我重新复习了一下sql的知识,...
    LucasPoint2阅读 2,675评论 0 1
  • 说说你对闭包的理解使用闭包主要是为了设计私有的方法和变量。闭包的优点是可以避免全局变量的污染,缺点是闭包会常驻内存...
    amCow阅读 3,885评论 0 7