Databricksのspark.sqlで20220801みたいな年月日がそのままくっついている日付の文字型データを2022-08-01のように変換して新しい列にする方法について紹介したいと思います。
文字列の抽出はSUBSTRING()
Databricks では一般的なSQLと同じようにSUBSTRING句で文字列の抽出ができます
書き方は他のSQLと同じような感じでOKです。
<構文イメージ>
SUBSTRING(文字列, 開始位置, 抽出数)
文字の結合はCONCAT()
Databricksでは文字の結合はCONCAT句で行うことができます。
こちらも一般的なSQLと同じ書き方でOKです。
<構文イメージ>
CONCAT(文字列①, 文字列②)
SQLで数字状の日付を年/月/日に分解する
SUBSTRING句とCONCAT句を用いて「20220101」→「2022-01-01」という風に変換する場合は以下のように記述します。
列名 _dateの中身
20220101,
20220102,
20220103,
・・・
<クエリサンプル>
SELECT CONCAT(year,'-', month,'-', day) AS date_date FROM ( SELECT SUBSTRING(_date, 1, 4) AS purchase_year ,SUBSTRING(_date, 5, 2) AS purchase_month ,SUBSTRING(_date, 7, 2) AS purchase_day FROM table )
コメント