フローを作成する中で値を変換したいと考えた事はないでしょうか。例えば、商品IDを対応する商品名に変換しマッピングに使いたい時などです。
そのような処理はTable関数で実現できます。この記事ではTable関数を使って値を変換する方法を説明していきます。
Table関数の使いどころ
マッパーの中で値を変換するにはChoice関数も使えますね。しかし、変換したい組み合わせが100個あったらどうでしょうか? Choice関数に100個も線をつなげるのは修行ですね。さらに、変換する値が頻繁に変更されたら? もうこうなってしまったら見づらいうえに、間違った設定をしてしまう可能性大です。Table関数では変換内容を見やすい形式のファイルで指定したり、プロパティに直接指定したりできるので、間違ってしまう可能性をだいぶ減らすことが出来るでしょう。変換したい値の数や変換内容の更新頻度によってこの2つの関数を使い分けるのがオススメです。
キーに応じた値を取得する
例えば、「商品ID」をキーとして「商品名」に変換する場合は「変換」タブにあるTable関数を使って次のように接続します。
そして、この関数のプロパティでキーと変換先の組み合わせであるテーブルの種類や入力形式を決めていきます。まず、テーブルの種類については"直接入力"と"ファイル"があり、どちらかを「テーブルの指定方法」プロパティで選択します。
これらの詳細は次の通りです。
テーブルの種類 | 詳細 |
---|---|
直接入力 | 「テーブルの内容」プロパティにテーブルの内容を直接入力します。 |
ファイル | テーブルの内容を記載したファイルを作り、「ファイルパス」プロパティでそのファイルを指定します。 |
また、テーブルの入力形式については"CSV形式"と"キー=値"があり、こちらについてもどちらか1つを「テーブルの形式」プロパティで選択します。
こちらについての詳細は次の通りです。
テーブルの形式 | 詳細 |
---|---|
CSV形式 | CSV形式で入力します。例えば、商品IDである"001"を商品名の"トマト"に変換する場合は次のようになります。(例)001,トマト |
キー=値 | キーとなる値と変換先の値をそれぞれ"="の左右に入力します。「CSV形式」での例をこの形式で表すと次のようになります。(例)001=トマト |
そして、この記事の「単一キーによる値の変換」では「テーブルの指定方法」と「テーブルの形式」プロパティをそれぞれ"直接入力"と”キー=値"、また「複数キーによる値の変換」ではこれらを"ファイル"と"CSV形式"にして手順を紹介しています。さらに、この記事では紹介していませんがこれらのプロパティを"直接入力"と"CSV形式"、または"ファイル"と"キー=値"に設定する事ももちろん出来ます。
単一キーによる値の変換
ここでは「テーブルの指定方法」と「テーブルの形式」プロパティをそれぞれ"直接入力"と"キー=値"に設定し、単一の値を変換する手順を紹介します。
まず、Table関数を配置し次のように接続します。ここでは先ほどと同様に「商品ID」をキーとして「商品名」へ変換する場合を想定しています。
そして、次のようにプロパティを変更していきましょう。
その次に、「テーブルの内容」プロパティをクリックした時に表示される右側の「...」をクリックします。
その後に開く編集画面でテーブル内容を入力します。入力する時は"="の左側をキー、右側を変換先の値にしてください。今回は次にように入力していきます。
以上でTable関数の準備は完了したのでデータを用意して実際に試してみます。
今回は次のようなデータを使います。
商品ID |
---|
002 |
実行すると"キュウリ"が結果の値になる事が確認できます。
「商品ID」の値である"002"がテーブル内容2行目のキーと一致しており、変換先の"キュウリ"が出力されるからですね。
複数キーによる値の変換
ここでは「テーブルの指定方法」と「テーブルの形式」プロパティをそれぞれ"ファイル"と"CSV"に設定し値を変換していきます。CSV形式でテーブルを作成する場合はキーや変換先をいくつか指定する事ができるため、今回はこの方法を使って「商品ID」と「入荷支店」をキーとして「商品名」に変換します。
まず、テーブルをCSV形式のファイルで作成していきます。今回は次のようなテーブルを用意しました。
商品ID,商品名,入荷支店
001,トマト,東京支店
002,キュウリ,神奈川支店
003,ネギ,千葉支店
003,ネギ,埼玉支店
次に、Table関数を配置し次のように接続します。
今回も先ほどと同様にキーとなる値を「商品名」へ変換する場合を例としていますが、キーが「商品ID」だけでなく「入荷支店」の合計2つになっている点に注意してください。
つまり、キーである「商品ID」と「入荷支店」の組み合わせが一致する行の「商品名」が変換先になる、という処理内容になります。
これを実現するためにプロパティを次のように変更します。
まず、「ファイルパス」プロパティでテーブルとして作成したCSVファイルのパスを指定します。次に、「ファイルのエンコーディング」プロパティで指定したCSVファイルのエンコーディングを選びます。
そして、複数のキーを指定するのが「キー列の位置」プロパティです。指定したいキーの項目の番号をカンマ区切りで指定します。今回のCSVの場合は項目の1つ目と3つ目がキーになるので、"1,3"と入力します。続いて、変換先にする項目の番号を同様に「値列の位置」プロパティに入力していきます。今回は「商品名」に対応する項目は2つ目なので、ここには"2"と入力します。
ここまで完了したら実際にフローを実行してみます。
今回は次のようなデータを用意しました。
商品ID | 入荷支店 |
---|---|
003 | 千葉支店 |
実行すると"ネギ"という結果が得られます。
キーである「商品ID」と「入荷支店」の組み合わせが一致する行の「商品名」である"ネギ"が出力されるからです。
以上でTable関数の説明は終わりです。値の変換を行いたい時はぜひ使ってみてください。
ヒント
複数の値を変換する時、もし思うような結果が出ない場合はキーとしてつないでいるフィールドの順番を確認してみましょう。
このフィールドの順番について今回は「複数キーによる値の変換」の例で紹介します。
この例では「商品ID」が入力1、「入荷支店」が入力2となっているのが正しいので次のようになっている場合は修正する必要があります。
フィールドの順番と「キー列の位置」プロパティで入力した値の順番は紐づいているため、このままでは2つのキーの値が逆になった状態で変換先を探してしまうからです。
これを修正するには「入力1」「入力2」プロパティのセレクトボックスから正しい値を選択します。