特定のフィールドの値によって出力するExcelファイルをわけたい #Alteryx Designer

2023.03.20

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Alteryx Dsigner において、特定のフィールドの値ごとに、出力するExcelファイルをわける方法です。

前提条件

下記の環境で検証しています。

  • Windows 10 Pro
  • Alteryx Designer 2022.3.1

Alteryx Designer での複数ファイル出力

Excelファイルに限らず、Alteryx Designer から複数ファイルへの出力を行う際は、通常のデータ出力時と同様に、データ出力ツールを使用します。

下図は、キャンバスでデータ出力ツールを選択した際のプロパティペイン(設定画面)の様子です。 複数ファイルへの出力を行う際は、赤枠で囲った部分の設定を使用します。

「フィールドからファイル/テーブルを名を取得する」にチェックを入れた状態で、この設定部分を拡大すると下記の通りとなります。

各種設定と複数ファイル出力時の基本的な挙動は下記の通りです。

  • ファイル名またはファイル名の一部を含むフィールド
    • Alteryxでの複数ファイル出力は、特定のフィールドの値に応じて出力ファイルをわけることとなります。そのため、ファイル分割の単位となる値が入力されたフィールドをここで指定します。
      • 例:ある特定のカテゴリに属するデータを、そのカテゴリを示すフィールドの値に基づいて別々のファイルに出力する必要がある場合、そのカテゴリを示すフィールドを指定します。これにより、各レコードが該当するカテゴリに応じて、対応するファイルに出力されます。
  • 出力ファイル名の指定方法
    複数ファイルを出力することになるので、ファイルの命名方法をここで指定します。
オプション 概要
ファイル/テーブル名に接尾辞を追加する データ出力ツールの接続設定で指定したファイル名の接尾辞として「ファイル名またはファイル名の一部を含むフィールド」で指定したフィールドの値がそれぞれ付与されます。
ファイル/テーブル名に接頭辞を追加する 上記と同様に、こちらは接頭辞が付与されます。
ファイル/テーブル名を変更する ・「ファイル名またはファイル名の一部を含むフィールド」で指定したフィールドの値がそのままファイル名となります。
・Excelファイルの場合、シート名に適用されます。
※複数ファイルではなく単一ファイル出力となります。この際、各レコードは指定したフィールドの値に基づいて、それぞれの値に対応するシートに出力されます。
ファイルパス全体を変更する ・「ファイル名またはファイル名の一部を含むフィールド」に、出力先するファイルの絶対パス、またはワークフローの保存先からの相対パスを入力したフィールドを指定することで、各レコードをそのパスに応じたファイルへ出力します。
・Excelファイルを複数ファイルとして出力する場合、こちらのオプションを使用します。
  • 出力でフィールドを保持する
    • チェックを入れると、「ファイル名またはファイル名の一部を含むフィールド」で指定したフィールドもデータに含めて出力します。

以降で、複数Excelファイル出力時の設定方法の詳細をご紹介します。

複数Excelファイル出力

上述の通り、複数のExcelファイルへ出力する際は、「ファイルパス全体を変更する」オプションを指定します。

ここでは、下記のサンプルデータを用いることとします。
このデータを[Category]フィールドの値ごとに、ファイルをわけて出力したいとします。

Category Val
A 100
B 200
C 300

サンプルワークフロー

「ファイルパス全体を変更する」オプションを使用するので、Excelファイルの出力先を示す新たなフィールドを作成します。この際、[Category]フィールドの値を使用して、レコードごとにそのカテゴリの値に応じたファイル名を付与します。

ワークフローの例は下記のようになります。

先に示したサンプルデータをテキスト入力ツールで与え、フォーミュラツールでファイル出力先パスを生成しています。


出力先パスの作成

フォーミュラツールの設定は下記の通りです。

新たな文字列フィールド[PATH]を作成し、式を入力しています。
この場合、フォーミュラツールの出力は下記のようになります。

ここでは、絶対パスで「DドライブのOUTPUTフォルダ」配下にファイルを出力する設定となっています。ポイントは下記の通りです。

  • [Category] + “.xlsx|||sheet1” とすることで、各レコードに、[Category]フィールドの値に応じたファイル名が付与される設定となっています。
  • 後半の|||sheet1 について、Excelファイルの場合、シート名の指定も必須となるので記述している部分になります。
    • この場合、すべてのファイルのシート名はsheet1 としてファイルが生成されることとなります。
    • この部分を変更すればシート名も指定可能です。カテゴリごとにファイルをわけ、さらに同一カテゴリ内でも、他の条件に応じてシートをわけてExcelファイルを出力することも可能です。
  • 上記では絶対パスによる指定でしたが、相対パスでも動作します。

データ出力ツールの設定

データ出力ツールの設定は、下記の通りです。

  • 接続設定オプション
    • ファイルの出力先(ここではD:\OUTPUT\temp.xlsx|||シート1)を指定していますが、後述するオプションで、レコードごとに出力先のファイルパスが変更されるので、こちらは適当な出力先を指定します。
  • フィールドからファイル/テーブル名を取得する
    • チェックをいれ、ファイル名の指定方法として「ファイルパス全体を変更する」を指定します。
    • 「ファイル名またはファイル名の一部を含むフィールド」には、カテゴリごとのファイル出力先を入力した[PATH]フィールドを指定します。
    • 「出力でフィールドを保持する」こちらは任意で、ここではチェックをいれています。

ツール実行後、OUTPUTフォルダには下記の通り3つのファイルが出力されます。

「出力でフィールドを保持する」オプションにチェックを入れたので、ファイルパスを記入した[PATH]フィールドも出力されています。チェックをはずせばこのフィールドは出力されなくなります。(下図はA.xlsxの例)

複数Excelシート出力

フォーミュラツールで出力先パスの作成を行わず、データ出力ツールを下図の設定とした場合、複数シートにわけてカテゴリごとに出力されます。
※ファイル名の指定方法として「ファイル/テーブル名を変更する」、対象フィールドとして[Category]を指定。

出力
この場合、データ出力ツールの接続設定オプションで指定した名称でファイルが作成されます。

カテゴリごとにシートをわけて出力されます。
シート名が、[Category]フィールドの各値となります。

さいごに

以上、Alteryx Designer から 特定のフィールドの値によって出力するExcelファイルをわける手順でした。

ワークフロー内でファイルの出力パスを指定する必要がありますが、レコードごとに出力するファイルのみでなく、ファイル・シートまで指定できるので、活用の幅は広い印象です。

こちらの内容が何かの参考になれば幸いです。

参考

AlteryxからExcelファイルにファイルを分けてデータを出力したい | DevelopersIO