SQL

【エラー対応忘備録】No matching signature for operator <= for argument types: DATE, STRING. Supported signature: ANY <= ANY

No matching signature for operator dateとで、 stringとで、日付の型が異なるせいで出るエラーです。 エラーコードでも、「Supported signature: ANY なので、where date(xxxx)

BigQueryでINFORMATION_SCHEMAを使ってメタデータを確認。

BQで利用状況を確認する際、INFORMATION_SCHEMAを使うのが便利です。 これはBQのメタデータへアクセスできるビューです。過去180日間に遡って、アクセスできます。テーブルの統計量調査する時に使えそうですね。 cloud.google.com https://cloud.google.c…

【BiqQuery】テーブル改修後のテスト手法。二つのテーブルの差分を出す

テーブルを改修した際は、必ず改修前のテーブルと比較し、 予定通りのものになっているか求めると思います。もっともお手軽で簡単なのがexceptを使ったテスト方法です。今回は`exceptを使うことで差分を取ります。 これは、AとBというテーブルがあった場合…

Bigquery での日次関数まとめ。

SQL書く際に、検索する手間を省くために、まとめています。 CURRENT_DATE. 現在の日次・タイムスタンプを取得。 EXTRACT. 年,月,日,を分けて抽出。 DATE. 日付を取得 DATE_ADD 日付を加算。 DATE_SUB. 日付を減算。 DATE_TRUNC 日付を切り詰める DATE_DIFF(…

【SQL】SELECTでいらないカラムはexcept()で除外できる。そう、BigQueryならね。

BigQueryでは、クエリしたくないカラムをexcept()で指定すると、 *(XXX)で、早くクエリが書けます。ふつうSQLは、一部のカラムを除外して、抽出というのができない。 クエリするものは明示すべきなので、クエリとしては正しいけど、実務的には、分析する際、…

結合した際のNULLの項目を、0にして集計する。

テストデータです。 t1 t2 すごくテストデータ適当ですが、、、 t1に対して、t2を結合した際、t2であるJOBテーブルは、NULLが発生します。 もしcount(),AVG()で集計する際ですが、集計関数はNULLは対象外となっています。 よって、件数が10だとしても、…

SQLの書き方メモ2

SQLって、基本的な書き方はわかっていても、あの書き方ってどうするんだっけ?みたいになりません? 初心者のためにもコードを書いておこうと思います。もともと自分で書いたものですが、はてぶろにも残しておきます。日次のアクセス数を取得 SELECT DATE(st…

SQLの書き方メモ

獲得所持金が50以上のユーザーだけ表示する。 eventlogテーブルから、userIDの合計の獲得所持金と平均の獲得所持金を表示。さらに、HAVINGを追加して、合計の獲得所持金が100以上のユーザーだけ取得。 SELECT eventlog.userID AS "ユーザーID" ,SUM(events.i…

SQLの条件で、値の最大値で抽出する方法。

WHEREの条件に、date の最大値、つまり、一番最新値を付けたいとき、普通に書こうと思うと、 select * from xxxx where max(date) とやっても、エラーになります。なぜなら、SUMやMAXなどの集計関数はwhereで使えないからです。ではどうすればいいのかという…