今回は、ワイルドカードテーブルとテーブルサフィックスについて説明します。
ワイルドカードテーブルについて
はじめに、ワイルドカードテーブルについて説明します。
「@@@_20230401」「@@@_20230416」のように日付ごとに保存されたデータがあるとします。
このデータを月ごとにまとめて集計したい場合に”*”(ワイルドカード)を使うことができます。
2023年4月のデータをまとめる場合は、「@@@_202304*」というテーブル名にします。
この場合、語頭に「@@@_202304」を共通で持つテーブルが全て結合されます。
この*を使ってまとめたテーブルをワイルドカードテーブルと言います。
ワイルドカードテーブルは、「UNION ALL」を使ってテーブルを結合した場合と同様のテーブルになります。
そのため、「UNION ALL」を何度も用いることなく、共通のテーブル名を持つテーブルをまとめることができます。
ワイルドカードテーブルの作成
では、ワイルドカードテーブルを作成していきましょう。
下記の画像のようなサンプルデータが保存されていると想定して説明します。
今回は、「magiq_target.table」の2023年1月のデータをまとめたワイルドカードテーブルを作成していきます。
①主テーブル入力
まず、主テーブルにワイルドカードを付け加えたテーブル名を入力します。
「magiq_target.table」の2023年1月のデータをまとめたいので、「magiq_target.table_202301*」を主テーブルに入力します。
主テーブル欄には直接記入することができるので、上記の画像のように入力します。
②フィールド選択
次に、フィールドを選択します。
ここでは、抽出したいカラムを選択してください。
カラムを選択し終えたら、ワイルドカードテーブルの設定は完了です。
ワイルドカードテーブルの注意点
ワイルドカードテーブルを作成する際の注意点として、結合したいテーブルのテーブル名があります。
ワイルドカードは末尾以外が一致するデータテーブルを結合して抽出します。
そのため、例えば「@@_20230601」「@@_202306member」というデータテーブルがある時、「@@_202306*」とすると2つのテーブルが結合されて抽出されてしまいます。
ワイルドカードテーブルを作成する際は、データセットの内容を把握し、結合したいテーブル名に気を付ける必要があります。
テーブルサフィックスについて
次に、テーブルサフィックス(_TABLE_SUFFIX)について説明していきます。
テーブルサフィックスとは、ワイルドカードテーブルを作成する場合にできる疑似列を指します。
ワイルドカードテーブルの作成例では、2023年1月のデータでまとめるために日付部分に*(ワイルドカード)を加えました。
この時、ワイルドカードで省略された部分の列がテーブルサフィックスになります。
そのため、作成例においては、2023年1月の日付が省略されたため、テーブルサフィックスに「01,08,15,22,29」の値が含まれることになります。
テーブルサフィックスの利用例
ここで、2023年1月のデータから「20230101〜20230115」のデータだけを見たい場合について、Magiq上で設定してみます。
この場合、テーブルサフィックスを「01~15」に指定することで、データを限定することができます。
ワイルドカードテーブル作成例に条件を付け加えることで、抽出することができます。
条件指定
まず、条件を指定していきます。
「フィールド」を選択すると、次のような一覧が表示されます。
「_TABLE_SUFFIX」はフィールド一覧の一番上に表示されます。
「20230101〜20230115」のデータだけを見たいので、上記のようにBETWEENを用いて条件を指定すれば、動作は完了です。
ここで注意する点として、条件欄に文字列として数値を入力しなければなりません。
テーブルサフィックスはテーブル名から省略された値なので、データ型が文字列になっています。通常とはデータ型が異なるので、気を付けましょう。
テーブルサフィックスの活用
最後に、テーブルサフィックスを利用した活用例を紹介します。
ワイルドカードテーブルの中から最新のデータを抽出したい場合を想定します。
ここでは、テーブルサフィックスを最新の日付に合わせる必要があります。
まず、条件式の左欄に「_TABLE_SUFFIX」を入力し、右欄では関数を選択していきます。
関数は、「FORMAT_DATE」を選択します。
日付データを文字列に変換したいので、FORMAT_DATE関数を使います。
引数には、「20230101」のような文字列になるよう、「%Y%m%d」と入力します。
引数2には、上記の画像のように最新の日付である「CURRENT_DATE」関数を選択します。
CURRENT_DATE関数には、「Asis/Tokyo」というタイムゾーンを引数に加えることで日本の時間に合わせたデータが抽出されます。
結果として、上記の画像のように設定することができれば、動作は完了です。
上記のクエリを実行することで、テーブルサフィックスを最新の日時に指定してデータを抽出することができます。
まとめ
今回はワイルドカードテーブルとテーブルサフィックスについて説明しました。
ワイルドカードテーブルとテーブルサフィックスは、日時ごとのテーブルをまとめて集計したりする場合に活用できますので、是非ご活用ください。