Customineには日々新しい機能が追加されていますが、やることを見ただけではぱっと使い方が浮かばない機能も時々あります。
今回はその中の代表格、「レコードを仕分けして別のアプリに登録する」の使い方を解説していきたいと思います。
「レコードを仕分けして別のアプリに登録する」とは?
レコードを特定のキーで仕分けして、キーの値ごとに1レコードに書き出す、という動きをします。言葉で書いても何を言っているのやらわからないと思いますので、図にするとこういうことになります。
これを見ていただくと「ああ、あれか!」とお分かりになるかと思います。
この例では、アプリAのレコードを「仕入先」および「商品」というキーで仕分け・集約して、アプリBに書き出しています。
仕分けキーが「仕入先」で、集約キーは「商品」、ということになりますね。
アプリB側には仕入れキーである「仕入先」ごとにレコードを書き出し、それぞれの各テーブルでは、集約キーである商品ごとに数量を合計しています。
それではこれを実現するカスタマイズを作成してみましょう。今回はアプリはそれぞれご自分でご用意ください。
今回のカスタマイズは、アプリAに対するカスタマイズという想定しています。
Customineの設定
まず、仕分けしたいレコードを用意します。今回はアプリAにあるレコードを利用するカスタマイズですが、これは特に制限されていません。例えば仕分けを実行するボタンはアプリAに置きますが、ここには登場しないアプリCから特定の条件でレコードを取得し、アプリBに登録する、ということも勿論可能です。
今回は簡単に、一覧画面から仕分けするレコードを選択して仕分けする、というカスタマイズにしてみました。この部分は詳しくは解説しませんが、以下のようなカスタマイズをしてみました。
仕分けを実行する
用意したレコードに対して、やること「レコードを仕分けして別のアプリに登録する」を使って仕分けを実行します。設定は以下の通りになります。条件側は、仕分け対象のレコードが取得できた段階、つまりアクション4番の実行が完了したときを指定しています。
以下、やることの設定を一つずつ解説します。
仕分け対象レコード
- 仕分け対象レコードには、仕分けをしたいレコードのアクション番号を指定します
- 前述のとおり、カスタマイズが入ったアプリでも、それ以外のアプリのレコードでも構いません
仕分けキー
- 仕分けキーには、仕分けをしたいフィールドを指定します
- ここで指定したフィールドごとに、アプリBにレコードが作成されるイメージです
- ここでは仕入先ごとにアプリBにレコードを作成したいので、「仕入先」フィールドを選択しています
- 複数フィールドを選択可能なので、例えば「仕入先の担当者ごとに集計したい」という場合には、「仕入先」「担当者」フィールドを選択します
更にテーブルを集約するキー
- 更にテーブルを集約するキーは、省略可能です
- 省略した場合、単に「仕入先」ごとのレコードをアプリBに作成するイメージです
- ここでは「商品」フィールドを選択し、「仕入先ごとの、商品ごとの集計」を実行しようとしています
登録先アプリ
- 仕分けした結果を書き込むアプリを選択します
- 書き込む権限があるアプリであれば、どのアプリでも構いません
レコードに対するマッピング
- 仕分けされたレコードのどの内容を、仕分けの結果として書き込むかのマッピングを定義します
- ここでは仕分けた結果の「仕入先」を、アプリBの「仕入先」フィールドに書き込む設定をしています
- この「仕入先」は仕分けキーとして使用しているので、普通のフィールドとして「= 仕入先」と記述可能です
- ここで仕分けキー以外の値をレコードにマッピングすることも可能です。この場合、仕分けた複数のレコードが含まれていますので、count/maxなどの集計関数で記述する必要があります
- 例えば max(数量) でマッピングすると、仕入先ごとの数量の最大値を計算できます(この例ですと、仕入先A:3 / B:1 / C:3 という値になります)
登録先テーブル
- 更にテーブルを集約した場合に、書き込むテーブルを選択します
- これを利用するためには、アプリBには集約結果のフィールドを持つテーブルが必要になります
テーブルに対するマッピング
- ここでは、「仕入先」で絞り込み、「商品ごと」に集約した結果をテーブルに書き込みます
- ここでは集約した結果の「商品」「単価(複数レコードの先頭の値)」「数量(複数レコードの合計)」を書き込んでいます
- 「商品」と「単価」の記述の違いに注目してください
- 先程のレコードの時と同様に、集約するキーとして利用した「商品」はそのまま記述しています
- 「単価」は集約キーではないので、複数レコードの先頭の値を「単価[0]」と指定しています
- 「数量」は、複数レコードの合計を「sum(数量)」という集計関数を使っています
上記を読んだ上で、もう一度設定を確認してみてください。
いかがでしょうか?各設定項目と、実際の動きが頭に入ってきましたでしょうか?
何度か設定を変えて実際の動きを試してみて頂くと、理解しやすいと思いますのでお試しください。
まとめ
実際に実務で利用する場合には、例えば「仕分け済み」ステータスのようなものを用意して、仕分けが終わったらフラグを立てておく、というような運用が必要かと思いますので、ご注意ください。
この「レコードを仕分けして別のアプリに登録する」を利用して、簡単にレコード仕分けを実現していただければ幸いです。
もし分からないことがありましたら、チャットサポートにてお問い合わせください。