はじめに
例えば、1月のデータを2月に読み込んで開始するため1ヶ月遅れている、年度の初めから今日までのDataSetの中に情報を追加 するとしましょう 。これは年度の初めから今日までのDataSetなので、翌年の2月になると、前年からのデータは新しい現在の年のデータ用に保管場所を空けるためにこのDataSetから消えます。12月のデータがこの年度の初めから今日までのファイルに読み込まれた際に、データを別のDataSetにアーカイブするにはどうすればよいですか?結論から言えば、いくつかの方法があります。これは、MySQLとMagic ETL のどちらでも行うことができます。 このプロセスは、年度の初めから今日までのデータを含むどのDataSetにも適用されます。年のマークをクリックして、履歴目的のためにアーカイブすることができます。メソッド1
メソッド1 MySQL DataFlowを使用する
これはストアドプロシージャを使うことにより実行できます。この方法は最も柔軟な方法で、適用する必要のある特別なロジックを考慮して適合させることができます。 このストアドプロシージャ内のコードは次を想定しています。- 現在の年度の初めから今日までのデータは再帰的なDataFlowを介して履歴アーカイブに追加されます。
- この再帰的なDataFlowは既に作成されています。
- DataFlowは、年度の初めから今日までのDataSetが更新されるときに、自動的に実行されるように設定されています。
ytd_premium_data
という名前のDataSetからデータが取得され、履歴アーカイブは move_to_history_method_1
と呼ばれます。


CALL archive();
年度の初めから今日までのデータを(アーカイブの準備ができている場合)履歴アーカイブデータに追加するには(ステップ名は DataFlow_output )…
-- Union whatever's in archive_data to thie historical table. If the coniditons for moving the data weren't met, archive_data will be empty.
SELECT *
MAX 日付が一致します。次に、アーカイブするデータを格納する表を作成します。上限が1の表から SELECT * のショートカットを使用できます。その後、表を切り捨てます。これは、手動でプロセスを実行する必要がなく、表スキーマを迅速に作成できる方法です。表スキーマを複製する必要がなく、自動的に作成されます。
いくつかのチェックを実行します。
- 正しい年ですか?
- 1月ですか?(その場合は、12月のDataSetが読み込まれます。)
- アーカイブする月は12月ですか?
メソッド1 Magicを使用する
この方法はMySQLを使用する方法ほど簡単ではありませんが、DataFlowは同じロジックを使用します。-
Magicの
MAX日付を取得するには、すべての行で同一の列で Group By 変換を行う必要があります。したがって最初のステップは、 Add Constant 変換を使用して一定値を使用して列を追加します。このケースでは、数値1を入力し、「One」と名前をつけました。これを2回行います。1回は年度の初めから今日までのプレミアムデータに対して、もう1回は履歴アーカイブデータに対してです。
-
Group By 変換を挿入し、今作成した列(「One」)によるグループ化を行い、各グループ化に対して新しい列を作成し、「Date」列に対して Maximum を選択します。このステップも2回行います。1回は年度の初めから今日までのプレミアムデータに対して、もう1回は履歴アーカイブデータに対してです。ただし、新たに集計された各列に異なる名前を付ける必要があります。


-
Join 変換を使用して、ステップ2の2つのDataSetを列「One」に結合します。
その結果は、年度の初めから今日までのデータの中の最大日付、履歴アーカイブデータの中の最大日付、そして「One」を含む2つの列を含むことになります。


-
[定数を追加] を使用して、今日の日付をDataSetの中の他の日付に追加します。

-
Date Operations 変換を挿入し、「Today」列から「Current Month」と「Current Year」の列を作成し、「MaxDataDate」列から「Data Month」と「Data Year」を作成します。


-
年度の初めから今日までのDataSetの中のすべての行に、今作成したデータが含まれていることを確認するには、両方のDataSetで内部結合が行われ、「One」列で結合されるように Join Data 変換を挿入します。

-
Calculator 変換を使用して、「Current Year」から1を引いて「Prior Year」を決定します。

-
Filter Rows 変換を追加して、年度の初めから今日までのDataSetに12月からのデータが含まれているかどうか、それが履歴データアーカイブに既に追加されているかどうかを決定するロジックを適用します。


-
Select Columns 変換を使用して、作成した追加の列をすべて取り除き、スキーマが履歴データアーカイブにあるものと一致するようにします。

-
Append Rows 変換を追加して、(該当する場合は)年度の初めから今日までのDataSetを履歴アーカイブDataSetに追加します。ドロップダウンから すべての列を含める を選択します。すべてを正しく行った場合は、各入力DataSetの横に「変更なし」と表示されます。

-
設定 の下で、ボックスにチェックマークを入れ、年度の初めから今日までのDataSetが更新されるたびに、変換が必ず実行されるようにします。

メソッド2
メソッド2 MySQLを使用する
年度の初めから今日までのデータをアーカイブするかどうかを決定するための多数の要件がない場合、そして年度の初めから今日までのDataSetが特定の日付までに完了することが分かっている場合は、データをアーカイブする以外には何も実行しないDataFlowを作成できます。作成した後は、このDataFlowを毎年決まった日に実行するようにスケジュールすれば便利です。 この例では、年度の初めから今日までのDataSetが毎年1月20日までに完了して最終的なDataSetとなることとします。最初にしなければならないことは、CSV DataSetを作成し、毎年1月20日に更新するようスケジュールすることです。- https:// お使いのインスタンス名. domo.com/connectors/com.domo.connector.csv.easy にアクセスします。
-
任意のテキストをボックス内に入力します。ここでは、
1800-01-01の値をもつ「Date」という名の列を作成します。
-
[次へ] をクリックして スケジュール セクションを表示します。

-
[スケジュールの詳細設定] タブをクリックします。

- 適切な 月 と 月の日付 をチェックします。
- 時間 タブをクリックし、ジョブを実行する時間を選択します。
- [次へ] をクリックします。
- CSV DataSetに任意の名前を付け、 [保存] をクリックします。

メソッド2 Magic ETL を使用する
自動的にスケジュールされたMagic ETLは、年度の初めから今日までのデータを履歴アーカイブデータに追加するだけです。自動スケジュールを追加するには、自動アップデートDataSetを追加し、更新時にはいつでも変換を実行する設定にチェックする必要があります。MySQL DataFlowを使用する場合とは異なり、Magic ETLを使用すると、単に入力DataSetを追加して変換に含めることはできません。これを行うとMagicがエラーになってしまいます。したがって、DataFlowの中に組み込むためのいくつかの手順を実行する必要がありますが、その手順によりデータが実際に影響を受けないようにしてください。
- 入力Dataset として「自動更新」DataSetを追加します。
-
Filter 変換を挿入します。このDataSetの中の列の1つは日付であるため、「日付」 がNULL値であるレコードのみを選択するようにフィルターを設定します。これによりデータの行がなくなりますが、これは後で日付の行を残りのデータに追加するので便利です。また、行がないため、影響を受けることがありません。
CSVファイルは更新時に「_BATCH_ID_」と「_BATCH_LAST_RUN_,」の2つの列を追加するため、データから削除する必要があります。

-
Select Columns 変換を挿入し、「日付」のみを選択します。

-
最初のドロップダウンで すべての列を含める を選択して Append 変換を挿入します。

- 保存 は行いますが、DataFlowは実行しないでください 。このDataFlowを実行すると、年度の初めから今日までのDataSetの中に存在するあらゆるデータが、アーカイブされたDataSetに追加されます。