メインコンテンツへスキップ

はじめに

[データの選択]では、最後に正常に実行された後に更新されたバッチのみを読み込むことを選択するか、作成日またはパーティション名にもとづいて読み込むバッチを指定できます。組織固有のニーズに合わせてアプローチをカスタマイズできます。 パーティショニング およびその他の Magic ETLのDataSet更新方法 の構成とベストプラクティスについて説明します。 この記事では、DataFlowで[データの選択]を設定する方法を説明し、カスタム式の使用例を示します。

入力DataSetの[データの選択]を設定する

Magic ETLは、DataFlowに入力DataSetを設定する際に、[すべて]、[新規]、[バッチでフィルター]の3つのデータ選択方法を提供しています。これらの方法については、次の手順で説明します。
configure subset processing.jpg
Magic ETLで初期データ処理を設定するには、次の手順を実行します。
  1. Data Centerに移動し、Magic ETLでデータ処理を設定するDataSetを探します。
  2. [開く:] > [Magic ETL] を選択します。 Magic ETLキャンバスが開き、DataSetが入力DataSetとして表示されます。
    Screenshot 2024-09-05 at 4.37.51 PM.png
  3. 入力DataSetを選択して、キャンバスの下にタイルエディターを開きます。エディターには4つのタブがあります。
  4. [設定] タブで、 [データ選択] ドロップダウンを使用して、ニーズに最適な方法を選択します。
    configuration tab.jpg
    次のような方法があります。
    • [すべて] — これがデフォルトの方法です。この方法を選択すると、DataSetからすべての行が読み込まれます。 自動最適化の詳細については、「 Magic ETL DataFlowの自動追加処理 」を参照してください。
    • [新規] — 最後に正常に実行された後に更新されたDataSetバッチ(再作成されたパーティションを含む)を読み込む場合は、この方法を選択します。 この方法を使用していてDataSetに置き換え操作があると、次回DataFlowを実行した時に、置き換えによるすべてのバッチと置き換え後に追加されたすべてのバッチが読み込まれます。出力は、DataFlowに保存したアクション(追加や置き換えなど)を引き続き実行します。Magic ETLの更新方法の詳細については、 こちら を参照してください。
      注記: 入力DataSetのすべてのバッチを時々置き換え、DataFlow内の出力DataSetに常に追加する場合、出力DataSetに重複データがある可能性があります。
    • [バッチでフィルター] — 作成日にもとづいて、またはパーティションの場合は名前にもとづいて読み込むバッチを指定する場合は、この方法を選択します。この方法を使用する場合は、下に示すエディターの [バッチでフィルター] セクション内のデータも指定する必要があります。

バッチでフィルター

[データをインポートするタイミング] ドロップダウンで、使用可能なオプションのいずれかを選択します。
  • [処理済みデータ] — 特定の処理日を使用してデータを読み込みます。次に、 [日付] フィールドで目的のロジックを定義します。例: 過去5日間のデータ
    Screenshot 2023-03-28 at 8.39.20 PM.png
  • [カスタマイズされた数式]— カスタマイズされた数式を使用してデータを読み込みます。自由形式フィールドを使用して、数式を作成します。次の表に、カスタマイズされた数式の記述に使用できる値についての情報を示します。 DataSetをパーティショニングする場合、プロセスはデータ自体の値ではなくDataSetのメタデータにもとづきます。つまり、DataSetのサブセットを定義するときは、データ内の特定の値を選択するのではなく、データを定義するメタデータのサブセットを選択することになります。
    Screenshot 2023-03-28 at 8.40.07 PM.png
    Screenshot 2024-09-05 at 4.53.36 PM.png
  1. [データ処理] の設定に変更を加えます。
  2. DataFlowを保存します。プレビューを実行して設定をテストできます。
このページのトップへ

使用事例

この画像のスクリプト(下のコードサンプル)は、入力DataSetが日付でパーティショニングされていることを前提としています。つまり、データは日付にもとづいて異なるパーティションに分割されるため、スクリプトは日付関連の関数を使用してデータをフィルターできます。パーティショニングの詳細については、 こちら を参照してください。
Screenshot 2023-03-28 at 8.46.19 PM.png
このスクリプトでは、パーティション名(日付)と現在の日付を比較するフィルターが作成されます。現在の日付が月の最初の日である場合、フィルターは過去1年のすべてのパーティションの通過を許可します。現在の日付が月の最初の日以外である場合、フィルターは過去30日分のパーティションの通過のみを許可します。 このフィルター戦略を使用すると、1年分のデータを月に1回メンテナンスしながら、毎日処理するデータ量を減らすことができます。この方法は様々なシナリオで使用できるので、色々と試してみることを推奨します。
DATE(batch.name) >= CURRENT_DATE() - (CASE WHEN DAYOFMONTH(CURRENT_DATE()) = 1 THEN 365 ELSE 30 END)
このページのトップへ 日本語