SparkSQLでよく使う関数を一覧化しています!
テーブル操作
CREATE TABLE
Spark SQLでテーブルを作成するための基本的な構文です。
CREATE TABLE [IF NOT EXISTS] テーブル名 (
列1 データ型,
列2 データ型,
...
) [USING フォーマット]
[OPTIONS (キー = '値', ...)]
[PARTITIONED BY (パーティション列名 データ型, ...)]
[CLUSTERED BY (クラスタリング列名) INTO num_buckets BUCKETS]
[TBLPROPERTIES (キー = '値', ...)]
CREATE TABLE
:新しいテーブルを作成するためのキーワードです。IF NOT EXISTS
:指定された名前のテーブルが既に存在する場合でも、エラーを発生させずに処理を続行します(オプション)。テーブル名
:新しいテーブルの名前を指定します。(列1 データ型, 列2 データ型, ...)
:テーブル内の列の定義を含む部分です。各列は、列名とデータ型で構成されます。USING フォーマット
:テーブルを作成する際に使用するファイルフォーマットを指定します(例:Parquet、ORC、CSVなど)。OPTIONS (キー = '値', ...)
:フォーマット固有のオプションを指定します。PARTITIONED BY (パーティション列名 データ型, ...)
:パーティショニングされたテーブルを作成します。CLUSTERED BY (クラスタリング列名) INTO num_buckets BUCKETS
:クラスタリングされたテーブルを作成します。TBLPROPERTIES (キー = '値', ...)
:テーブルのプロパティを指定します。
詳細をまとめておりますのでご参考ください!
文字列関数
length(str)
- 文字列の長さを返します。
concat(str1, str2, ..., strn)
- 複数の文字列を結合します。
substring(str, start, length)
- 文字列の一部分を切り出します。
trim(str)
- 文字列の先頭と末尾の余分な空白を削除します。
lower(str)
- 文字列を小文字に変換します。
upper(str)
- 文字列を大文字に変換します。
split(str, delimiter)
- 文字列を指定されたデリミタで分割し、配列として返します。
substring_index(str, delimiter, count)
- デリミタを指定して、指定されたカウントだけ文字列を分割します。
replace(str, search, replacement)
- 文字列内の指定された部分文字列を別の文字列で置換します。
like(str, pattern)
- 文字列が指定されたパターンに一致するかどうかを判定します。パターンにはワイルドカード文字(%や_)を使用できます。
その他の関数も記載しておりますのでご参考ください!
集約関数
- SUM: カラムの合計を計算します。
SELECT SUM(column_name)
FROM table_name
- COUNT: カラムの非NULL値の数を計算します。
SELECT COUNT(column_name)
FROM table_name
- AVG: カラムの平均値を計算します。
SELECT AVG(column_name)
FROM table_name
- MIN: カラムの最小値を返します。
SELECT MIN(column_name)
FROM table_name
- MAX: カラムの最大値を返します。
SELECT MAX(column_name)
FROM table_name
以下記事にてその他の関数も紹介しております!
日付関数
current_date()
: 現在の日付を返します。
SELECT current_date();
date_format(date, format)
: 指定した形式で日付をフォーマットします。
SELECT date_format(current_date(), 'yyyy-MM-dd');
date_add(startdate, num_days)
: 指定した日数を加えた後の日付を返します。
SELECT date_add('2023-01-01', 7);
- d
ate_sub(startdate, num_days)
: 指定した日数を引いた後の日付を返します。
SELECT date_sub('2023-01-08', 7);
datediff(enddate, startdate)
: 2つの日付の差を日数で計算します。
SELECT datediff('2023-05-12', '2023-01-01');
next_day(startdate, dayOfWeek)
: 指定した日付以降で最も近い指定曜日の日付を返します。
SELECT next_day('2023-05-12', 'Sunday');
weekofyear(date)
: 年内の週番号を返します。
SELECT weekofyear('2023-05-12');
date_diff(startdate, enddate)
: 2つの日付の差を返します。(日数で計算)
SELECT date_diff('2023-01-01', '2023-05-12');
date_trunc(format, timestamp)
: 指定した形式でタイムスタンプを切り捨てます。
SELECT date_trunc('hour', '2023-05-12 10:30:00');
その他の日付関数についても紹介しております!
ここまで読んでいただきありがとうございます。
SQLでは、文字列の日付変換に限らず様々なケースで疑問を感じるかと思います。
「このようなケースの場合はどのように記述したらよいか、、」
「データサイエンティストになるにはどのように効率的に学習していったらよいか?」
など自己学習に不安がありましたら、以下のスクールのご活用もご検討ください!
SQL参考文献
SQL学び始めの時はこちらの本を参考にしていました。
DBやテーブルの構造から、よく使う関数などがまとめられています。基礎を身につけたい方におススメかと思います。
リンク
コメント