SQLの記述ルールについて知りたい

本記事では

本記事では、b→dashにおけるSQLの用途や記述ルールについて説明します。
b→dashにおけるSQLの基本的な操作については「SQLを用いてデータを加工/統合する手順を知りたい」をご参照ください。

SQLを利用せず管理画面の操作のみでデータの加工や統合を行いたい場合は、「[概要]加工タスク一覧」または「統合テンプレートを利用したい」をご参照ください。

b→dashにおけるSQLの用途

b→dashでSQLを利用する主な用途は、b→dashにあるデータファイルに対して加工や統合を行うという使い方になります。b→dashにあるデータファイルを使用せずに、SQLで新規にデータファイルを作成することはできませんのでご留意ください。

【参考:b→dashにおけるSQLの用途】

b→dashにおけるSQLの記述ルールについては、下記にて説明します。

b→dashにおけるSQLの基本ルール

b→dashにおけるSQLの基本ルールを『① 使用可能なSQL文について』『② データ型ごとのルールについて』『③ 文字数上限について』『④「’」(シングルクォート)「”」(ダブルクォート)で囲んだ場合について』『⑤ コメントアウトの記述方法』『⑥ SQLを利用したカラム名の命名方法』の6つに分けて説明します。

① 使用可能なSQL文について

b→dashで使用可能なSQL文について、「命令文」「SQL関数」の2つに分けて紹介します。

使用可能な命令文

b→dashでは、以下の7種類の命令文を使用することができます。

※ 記載のない命令文は使用することができません

SQLの種類 命令文 注意事項
DDL CREATE TABLE CREATE文で作成したテーブルは、SQLセットの中で利用する中間テーブルとしてのみ利用可能です。作成したテーブルをb→dashのデータパレット上で表示させることはできないのでご注意ください。
ALTER TABLE -
RENAME TABLE -
DML SELECT b→dashでは、SELECT文で抽出したデータを保存するため、最終クエリは必ずSELECT文にしていただくようにお願いします。
JOIN -
UPDATE -
DCL ※全て使用不可 -
使用可能なSQL関数

b→dashで使用可能なSQL関数については、以下の外部サイトをご参照ください。

snowflake:SQL関数リファレンス

※上記にて紹介されている関数について、加工/統合に使用する集計関数はすべてb→dashで使用可能ですが、他の一部の関数は使用することができませんのでご留意ください

② データ型のルールについて

b→dashでSQLを使用してデータの抽出や変更を行う際は、カラムに設定したデータ型ごとのルールに則って記述する必要があります。データ型ごとの記述のルールについては、以下をご参照ください。

データ型 ルール
小数型 指定した小数点の位より下の位は「0」であると認識されます。

例)SELECT * FROM TABLE_A WHERE COLUMN_B = 1.2;
とした場合は以下のようなデータが抽出されます
● 抽出されるデータ:「1.2」「1.20」「1.200」など
● 抽出されないデータ:「1.21」「1.200001」など
日付型 「-」区切りの日付表示は成功しますが、「/」区切りの日付表示をするとエラーになります。

● 成功例:「'2021-01-01'」など
● 失敗例:「'2021/01/01'」など

※SQLで日付を参照した場合、タイムゾーンはJSTではなくUTCが適用されます
日時型 「-」区切りの日付表示は成功しますが、「/」区切りの日付表示をするとエラーになります。

● 成功例:「'2021-01-01 15:00:00'」など
● 失敗例:「'2021/01/01 15:00:00'」など

※SQLで日付を参照した場合、タイムゾーンはJSTではなくUTCが適用されます
ISO 8601規格で定義している記載方法を利用することができます。

● 成功例
「'2020-12-31T15:00:00Z'」
「'2020-12-31 15:00:00'」
「'2020-12-31 15:0:0'」

● 失敗例
「'2020/12/31 15:00:00'」
真偽値型 1/0, true/falseなど広いフォーマットを利用することができます。

● 成功例:「1」「true」「'1'」「'true'」「TRUE」「True」

③ 文字数上限について

b→dashでSQLを使用する場合において、記述可能な文字数の上限は100,000文字となります。文字数のカウント対象には、スペースやタブ、改行、コメントなども含まれるので、記述する際はご注意ください。

④「’」(シングルクォート)「”」(ダブルクォート)で囲んだ場合について

b→dashでSQL文を記述する際に「’」(シングルクォート)で文字を囲んだ場合、抽出条件やカラム名に登録する名前などの「文字列」として判定します。「”」(ダブルクォート)で文字を囲んだ場合、カラム名などの「変数」として判定します
下記では、select文を例に「’」(シングルクォート)と「”」(ダブルクォート)で囲む際の成功例と失敗例を紹介します。

成功例
SELECT * FROM TABLE_A WHERE "COLUMN_1" = 'AAA'
失敗例①
SELECT * FROM TABLE_A WHERE "COLUMN_1" = "AAA"

上記のように「AAA」を「”」(ダブルクォート)で囲むと、「AAA」はカラム名として判定されるためエラーが発生します。

失敗例②
SELECT * FROM TABLE_A WHERE 'COLUMN_1' = 'AAA'

上記のように「COLUMN_1」を「’」(シングルクォート)で囲むと、「COLUMN_1」という文字列と判定されるため正しく表示されません。

⑤ コメントアウトの記述方法

b→dashでSQL文の中にコメントアウトを記述する方法について下記で「1行をコメントアウト」「複数行をコメントアウト」の2つの方法に分けて説明します。

1行をコメントアウト

1行のみをコメントアウトしたい場合は、コメントアウトしたい箇所の先頭に「」(ハイフン2つ)を挿入することで、「–」から後ろの1行をコメントアウトすることができます

コメントアウトしたい文の先頭に「」(ハイフン2つ)を挿入します

複数行をコメントアウト

複数行をコメントアウトしたい場合は、コメントアウトしたい行を「/*」「*/ 」(スラッシュ+アスタリスク) で囲うことで、囲まれた行を全てコメントアウトすることができます

コメントアウトしたい行の前に「/*」、後ろに「*/ 」を挿入します

⑥ SQLを利用したカラム名の命名方法

b→dashでSQL文を記述する際に、SQL構文の「SELECT ~ AS ~」を利用することでカラム名を命名することができます。

b→dashでは、「SELECT ~ AS ~」という表記方法の場合、英小文字でカラム名を入力しても「英大文字」でカラム名が命名される仕様になっています

【「SELECT ~ AS ~」を用いたサンプルコード】

SELECT COLUMN_1 AS col_1 /*「col_1」(英小文字)と入力しても、『COL_1』(英大文字)と命名されます*/

カラム名を「英小文字」で命名したい場合は、「SELECT ~ AS “~”」という命名するカラム名を「”」(ダブルクォート)で囲む表記方法を利用する必要があります

【「SELECT ~ AS “~”」を用いたサンプルコード】

SELECT COLUMN_1 AS "col_1" /*『col_1』(英小文字)で命名されます*/
b→dashにおけるSQLの記述ルールについての説明は以上となります。