上級編|応用機能の説明

ワイルドカードテーブルとテーブルサフィックスの使い方について

今回は、ワイルドカードテーブルとテーブルサフィックスについて説明します。

ワイルドカードテーブルについて

はじめに、ワイルドカードテーブルについて説明します。

「@@@_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」というタイムゾーンを引数に加えることで日本の時間に合わせたデータが抽出されます。

結果として、上記の画像のように設定することができれば、動作は完了です。

上記のクエリを実行することで、テーブルサフィックスを最新の日時に指定してデータを抽出することができます。

まとめ

今回はワイルドカードテーブルとテーブルサフィックスについて説明しました。

ワイルドカードテーブルとテーブルサフィックスは、日時ごとのテーブルをまとめて集計したりする場合に活用できますので、是非ご活用ください。

TOP