唯物是真 @Scaled_Wurm

プログラミング(主にPython2.7)とか機械学習とか

BigQuery

BigQueryでクエリを書いたときにハマった罠集

自分がなんとなくBigQueryのクエリを書いていてハマった罠について列挙しておきます。 ドキュメントをちゃんと読めば書いてあったりするのですが、普段はそこまで細かく見てなかったりするんですよね……。 BigQueryのカレンダー | Advent Calendar 2023 - Qii…

BigQueryのSTRUCT型やARRAY型で無理やりGROUP BYで集計する

BigQueryではSTRUCT(構造体)型やARRAY(配列)型が使えます データ型 | BigQuery | Google CloudSTRUCT型のカラムでGROUP BYしようとするとGrouping by expressions of type STRUCT is not allowed atのようなエラーが出てきて実行することができません 同様に…

BigQuery MLの変数に適用してくれる前処理の調査 / 学習された重みは標準化後の値に対する重みなのか? / nullの扱いは?

BigQueryにBigQuery MLという機械学習の機能が追加されました。今はロジスティック回帰による分類と線形回帰による回帰問題について学習ができるようです学習時に変数に対してどのような前処理が行われるのか気になったので調べてみました 誤りなどがあった…

BigQueryで整数(INT64型)や浮動小数点数(FLOAT64型)をバイト列(BYTES型)にキャストする

整数(INT64型)や浮動小数点数(FLOAT64型)をBYTES型にしたかったので自前で処理をUDFとして書きました BigQueryのCAST関数でBYTES型にキャストでできるのはBYTES型自身とSTRING型に限られているので、他の型を変換したいときには自分で処理を書く必要がありま…

BigQuery で _TABLE_SUFFIX をビューやWITH句の外側から指定する

BigQueryのクエリでテーブル名の末尾に日付などを入れておいて _TABLE_SUFFIX のカラムの条件で利用するテーブルを絞り込みたい時に、_TABLE_SUFFIXの条件をビューやWITH句の外側から書いてみる話です

BigQueryでPHPのシリアライズされた形式の変数の中身を取得する

残念なことにDBにJSONなどではなくPHPでシリアライズされた形式でデータが保存されていることがあります この中身をBigQuery側から参照したかったので調べてみました軽く検索したところJavaScriptでPHPのシリアライズされたデータをもとに戻せるライブラリは…

BigQueryのGENERATE_ARRAY関数で個数が多い等差数列を作る

GENERATE_ARRAY(start_expression, end_expression[, step_expression])関数を使うと連番の数値(等差数列)を作ることができます リファレンス しかし一度に作る個数が多いとError: GENERATE_ARRAY(1, 10000000, 1) produced too many elementsのようにエラー…

BigQueryのWeb UIで選択範囲をコメントアウトする

範囲を選択してCtrl + /を押せばよいみたいです(Macの場合は⌘ Cmd + /) BigQueryのキーボードショートカット 以下の範囲選択した状態でCtrl + /を押すと 文字が書かれている部分だけコメントアウトされます 逆にこの形式(先頭に-- )でコメントアウトされてい…

BigQueryのSQLでなんとなく素数列挙を試した(実用性皆無)

GENERATE_ARRAY()関数を使うと等差数列が作れるので後はJOINしてがんばるだけ前に以下の記事でエラトステネスのふるいなどを調べたが、SQLでは試し割りによる方法ぐらいしか書けそうになかった sucrose.hatenablog.com 試し割り ある数をその数よりも小さな1…

BigQueryで効率的なクエリを書いて高速化する

BigQueryでクエリを書く時に、クエリの書き方によって実行時間を高速化できたり処理するバイト数を節約したりできます Googleが公式でBigQueryのベストプラクティス集(今はまだ未翻訳)を公開してくれているので、そのうちのクエリを書く時周りのノウハウを簡…

BigQueryのクエリで定数を定義して複数箇所で使いたい

BigQueryでクエリを書くときに、同じ日付や倍率、円周率などの定数をクエリの複数箇所で使いたい時があります 単純に複数箇所に書くと修正するときに大変なので、共通のものを複数箇所で使いまわす方法を調べてみました UDF(ユーザー定義関数)による方法 定…

BigQueryで配列に添字をつける(複数の配列をzipする)

BigQueryのStandard SQLを使っていて配列から位置を指定して要素を取り出すことはできるのですが、UNNEST()を使ってそれぞれの要素を取り出した時にある要素が何番目かという情報を一緒に得る方法がわからなかったのでやり方を考えました(もしかしたら簡単に…