背景
Big Query で使ったクエリのコストをコマンドでまとめて調べたい。管理者権限でなければ全体の利用料などが確認できない場合がある。
方法
bq コマンドの ls 命令の j オプションにて、JOB IDが取得できる。
また show 命令の j オプションにて、billing bytes などを取得できる。
よって、次のコマンドを利用する。
bq ls . . . 本文を読む
次のようなエラーで止まっていた。
Errors:
Request timed out. Please try again. (error code: timeout)
Job ID xxxxxxxxxxxxxxxxxxxxxxxxxxx
Creation Time Sep 28, 2016, 7:22:06 PM
Start Time Sep 28, 2016, 7:22:06 . . . 本文を読む
背景
BigQueryにて、Null(固定値:特定のカラムが全てNull)のあるテーブルをUNIONしようとして、Incompatible types というエラーが出る。
クエリによるテーブルなので、NULLABLEなどの設定は出来ない。(もともとNULLABLEという設定はない?)
解決策
クエリを見た目動的にする。例えば、
IF(1=1, Null, "文字列 . . . 本文を読む
背景
Big Queryを使って結構お金を使ってしまった話をよく聞く。自分が実践している、Tipsを紹介。
Tips
整数は整数でbq loadする。
整数や浮動小数点は文字列(String)でなくて、整数や浮動小数点で bq loadする。BigQueryは舐めるデータの量で課金される。文字列のままだとそれだけでデータが大きくなってしまう。IDを作る場合も、必ず整数で作成 . . . 本文を読む
背景
全体ではなく、group 毎に limit 数を付けたい。もう少しわがまま言うと、group毎にランダムサンプリングしたい。
方法
次のようなクエリのときで、
SELECT
aaa,
bbb
FROM
table1
;
aaaのグループ毎に上限1000で出したいとする。
SELECT
aaa,
bbb
FROM
. . . 本文を読む
背景
BigQueryにて特定のカラムの値毎にデータを集めたい時がある。普通のSQLなら、その特定のカラムでソートしてやれば良い。
ところが、BigQueryで扱うような大規模なデータだと、ソートしようとすると、"Resources Exceeded during query execution" というエラーが表示される。
その特定のカラムで GROUP BY の計算はできるので、集め . . . 本文を読む
背景
SQLで、有効数字n桁にまとめたいことがある。printfに相当する関数があればよいが、それがないとき。
数行数字n桁にする計算式
xが丸めたい数値、nが丸めたい桁数の時に、BigQueryでは、
round(x,integer(-log10(x)-1+n))
単にlog10で桁数を求めただけ。微妙に100とか1000のように丁度になったときはintegerによる切り捨 . . . 本文を読む