新しいことにはウェルカム

技術 | 電子工作 | ガジェット | ゲーム のメモ書き

SQL

BigQueryの少し凝った使い方メモ(etc)

普段Google BigQueryでは簡単な集計SQLしか使っていないのですが、集計SQL以外にも色々便利な機能があります。 ただ、使用頻度が高くないので、いざ使おうとするとマニュアルを探すところから始まるので、自分用に簡単な使い方をまとめておこうと思います。 …

BigQueryの少し凝った使い方メモ(スケジュールされたクエリ)

普段Google BigQueryでは簡単な集計SQLしか使っていないのですが、集計SQL以外にも色々便利な機能があります。 ただ、使用頻度が高くないので、いざ使おうとするとマニュアルを探すところから始まるので、自分用に簡単な使い方をまとめておこうと思います。 …

BigQueryの少し凝った使い方メモ(プログラミング)

普段Google BigQueryでは簡単な集計SQLしか使っていないのですが、集計SQL以外にも色々便利な機能があります。 ただ、使用頻度が高くないので、いざ使おうとするとマニュアルを探すところから始まるので、自分用に簡単な使い方をまとめておこうと思います。 …

BigQueryの少し凝った使い方メモ(テーブル作成・データ更新)

普段Google BigQueryでは簡単な集計SQLしか使っていないのですが、集計SQL以外にも色々便利な機能があります。 ただ、使用頻度が高くないので、いざ使おうとするとマニュアルを探すところから始まるので、自分用に簡単な使い方をまとめておこうと思います。 …

BigQueryの少し凝った使い方メモ(ビュー・マテリアライズドビュー・テーブル関数)

普段Google BigQueryでは簡単な集計SQLしか使っていないのですが、集計SQL以外にも色々便利な機能があります。 ただ、使用頻度が高くないので、いざ使おうとするとマニュアルを探すところから始まるので、自分用に簡単な使い方をまとめておこうと思います。 …

JavaScriptの配列をSQLで扱いたい

普段SQLを使うことが多いのですが、JavaScriptで配列のデータを扱っている時、JavaScriptの配列に対してもSQLでクエリが書けたらいいのになと思うことがあります。 一方、C#には配列をSQLライクなクエリで処理できる、LINQという言語が備わっています。 Java…

SQLのウィンドウ関数(分析関数)の覚え方

SQLを学び始めた時、一番分かりにくかったのがウィンドウ関数(分析関数)です。 データベースを、単にデータを出し入れする場所として利用する分には、ウィンドウ関数を使うことは無いのですが、データを分析しようとする場合、あるととても便利な機能です…

JavaScriptでSQLiteを使う方法メモ

JavaScriptでSQLiteを使う方法メモです。 あまり凝ったことはせず、必要最低限の機能に絞ってまとめました。 SQLiteそのものの使い方は割愛しますが、こちらが詳しいのでご参照ください。 インストール パッケージ「sqlite3」を使いました。 npm install sql…

SQL Server(Azure SQL Database)に読み取り専用ユーザーを追加する方法

SQL Serverのデータを、BIツールで読み込んでグラフを作ったりしています。 その場合、データは読み取りしかしないし、色んな人がグラフを作るので、書き込み権限を持ったユーザーは使いたくなく、共有用に読み取り専用ユーザーを作成しました。 今回、SQL S…

Azure SQL Databaseで、データベースをまたいだクエリは書かない方がいい

SQL Serverを使うのは、Azure SQL Databaseが初めてだったので知らなかったのですが、SQL Serverでは、データベースをまたいだクエリは、下記のように、データベースを指定することによって簡単に書けます。 SELECT * FROM [<db_name>].dbo.test_table しかし、Azure </db_name>…

SQL Server で月・週ごとに集計する方法

データを月・週ごとに集計するには、まず日付の月・週の頭の日付を求め、その頭の日付でGROUPします。 Google BigQueryなど、頭の日付取得にDATE_TRUNC()関数が使える場合は、下記のような感じで集計できます。 SELECT DATE_TRUNC(dt, MONTH) AS dt_month ,S…

SQLでグループの最後のレコードを取得する方法

「ユーザーのイベントログで、ユーザーが一番最後に行ったイベントを抽出する」など、 グループで分けたデータの最後のレコードを取得したい時があります。 ウィンドウ関数を使うと、下記のような形で求めることができます。 WITH tbl AS ( SELECT * ,ROW_NU…

MySQLのデータベースを、スキーマレスでパーティショニングしながらBigQueryにロードしてみる

BigQueryはデータ量が膨大でも、インフラの事は全く(本当に全く)気にしなくてよく、しかも早くて安いので、 データは全てBigQueryに入れてしまって、全部BigQueryで処理したくなってしまいます。 そんな訳で、MySQLのデータベースをまるまるBigQueryにロー…

SQL Server でカレンダーテーブルを作る方法

SQL Server(Azure SQL Database)で、カレンダーテーブルが欲しかったので作成方法メモです。 ググったところ、「WITH」でテーブルを作成し、そのテーブル定義の中の「UNION ALL」から再帰呼び出しして作るようです。 WITH _calendar AS ( SELECT CAST(N'20…

Google BigQueryでカレンダーテーブルを作る方法

日付で飛び飛びなデータを集計する時には、カレンダーテーブルが欲しくなることがあります。 Google BigQueryでは下記でカレンダーテーブルを作成できます。 「GENERATE_DATE_ARRAY()」でカレンダー配列が作れるので、「UNNEST()」で配列を行に展開してテー…