BigQuery在WebUI中使用自定義變量

Google的bigquery是一個強大的云數(shù)據(jù)庫,支半結構化數(shù)據(jù),TB級單表的查詢,自動擴充什么的,反正就是很NB。除了必須要翻墻和貴之外。。。
在bigquery的webUI界面,可以編寫SQL并查詢,同時會實時的提示你本次查詢所需的數(shù)據(jù)量,因為是按照這個數(shù)據(jù)量的大小算錢的。
然后BigQuery的SQL語法和標準SQL差不多。具體查看: Bigquery官方SQL文檔

1 在WebUI中使用自定義變量

這個主要是在編寫sql中有些值反復出現(xiàn),比如日期范圍這種,一個SQL寫的很長的話可能會出現(xiàn)好幾次同一個時間變量。
然后需要改變這些變量的時候就會很麻煩,每個地方都要去改一下。
所以自定義變量還是很有必要的。
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語句中就可以使用這個變量了。
但是這樣有一個問題,就是不能給你本次計算流量的預估值了。


如果你知道查詢的數(shù)據(jù)量不大的話,那倒無所謂。
但是有的表幾個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后跟上這個子查詢的名稱,它才能獲取到這個子查詢里的變量
兩種方法都不是很完美,但是至少也比一個一個的改變量要好多了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • SQL 優(yōu)化 在應用的的開發(fā)過程中,由于初期數(shù)據(jù)量小,開發(fā)人員寫 SQL 語句時更重視功能上的實現(xiàn), 但是當應用系...
    安靜點就睡吧閱讀 346評論 0 2
  • 前言 這里筑夢師,是一名正在努力學習的iOS開發(fā)工程師,目前致力于全棧方向的學習,希望可以和大家一起交流技術,共同...
    筑夢師Winston閱讀 26,450評論 80 514
  • 1.一些開放性題目 1.自我介紹:除了基本個人信息以外,面試官更想聽的是你與眾不同的地方和你的優(yōu)勢。 2.項目介紹...
    55lover閱讀 707評論 0 6
  • 最近面試當中被問到很多SQL的問題,有些正好記得概念,有些對概念比較模糊,因此我重新復習了一下sql的知識,...
    LucasPoint2閱讀 385評論 0 1
  • 說說你對閉包的理解使用閉包主要是為了設計私有的方法和變量。閉包的優(yōu)點是可以避免全局變量的污染,缺點是閉包會常駐內存...
    amCow閱讀 728評論 0 7

友情鏈接更多精彩內容