BigQuery
自分がなんとなくBigQueryのクエリを書いていてハマった罠について列挙しておきます。 ドキュメントをちゃんと読めば書いてあったりするのですが、普段はそこまで細かく見てなかったりするんですよね……。 BigQueryのカレンダー | Advent Calendar 2023 - Qii…
BigQueryではSTRUCT(構造体)型やARRAY(配列)型が使えます データ型 | BigQuery | Google CloudSTRUCT型のカラムでGROUP BYしようとするとGrouping by expressions of type STRUCT is not allowed atのようなエラーが出てきて実行することができません 同様に…
BigQueryにBigQuery MLという機械学習の機能が追加されました。今はロジスティック回帰による分類と線形回帰による回帰問題について学習ができるようです学習時に変数に対してどのような前処理が行われるのか気になったので調べてみました 誤りなどがあった…
整数(INT64型)や浮動小数点数(FLOAT64型)をBYTES型にしたかったので自前で処理をUDFとして書きました BigQueryのCAST関数でBYTES型にキャストでできるのはBYTES型自身とSTRING型に限られているので、他の型を変換したいときには自分で処理を書く必要がありま…
BigQueryのクエリでテーブル名の末尾に日付などを入れておいて _TABLE_SUFFIX のカラムの条件で利用するテーブルを絞り込みたい時に、_TABLE_SUFFIXの条件をビューやWITH句の外側から書いてみる話です
残念なことにDBにJSONなどではなくPHPでシリアライズされた形式でデータが保存されていることがあります この中身をBigQuery側から参照したかったので調べてみました軽く検索したところJavaScriptでPHPのシリアライズされたデータをもとに戻せるライブラリは…
GENERATE_ARRAY(start_expression, end_expression[, step_expression])関数を使うと連番の数値(等差数列)を作ることができます リファレンス しかし一度に作る個数が多いとError: GENERATE_ARRAY(1, 10000000, 1) produced too many elementsのようにエラー…
範囲を選択してCtrl + /を押せばよいみたいです(Macの場合は⌘ Cmd + /) BigQueryのキーボードショートカット 以下の範囲選択した状態でCtrl + /を押すと 文字が書かれている部分だけコメントアウトされます 逆にこの形式(先頭に-- )でコメントアウトされてい…
GENERATE_ARRAY()関数を使うと等差数列が作れるので後はJOINしてがんばるだけ前に以下の記事でエラトステネスのふるいなどを調べたが、SQLでは試し割りによる方法ぐらいしか書けそうになかった sucrose.hatenablog.com 試し割り ある数をその数よりも小さな1…
BigQueryでクエリを書く時に、クエリの書き方によって実行時間を高速化できたり処理するバイト数を節約したりできます Googleが公式でBigQueryのベストプラクティス集(今はまだ未翻訳)を公開してくれているので、そのうちのクエリを書く時周りのノウハウを簡…
BigQueryでクエリを書くときに、同じ日付や倍率、円周率などの定数をクエリの複数箇所で使いたい時があります 単純に複数箇所に書くと修正するときに大変なので、共通のものを複数箇所で使いまわす方法を調べてみました UDF(ユーザー定義関数)による方法 定…
BigQueryのStandard SQLを使っていて配列から位置を指定して要素を取り出すことはできるのですが、UNNEST()を使ってそれぞれの要素を取り出した時にある要素が何番目かという情報を一緒に得る方法がわからなかったのでやり方を考えました(もしかしたら簡単に…