Platioのアプリを使って現場でデータを閲覧・登録する時にPlatioのアプリに最新の情報が表示されていないと困りますよね。例えば、社員情報や顧客情報を見たり、注文情報を見たい場合などにすこし古い情報が表示されては不便で、ちょっと役に立たないなぁと思ってしまいます。
PlatioPutコンポーネントを使えば、社内のデータベースなどに保存されている社員情報や注文情報などのマスターデータをPlatioに連携できます。これで、社内のデータベースに注文情報が登録された時に即座にPlatioのデータを更新して、現場でPlatioのアプリを開いたときにはいつでも最新の情報を見ることができます。
PlatioPutを使うのは簡単です。PlatioPutをダブルクリックすればPlatioビルダーと呼ばれるダイアログが起動します。後はそのダイアログで、更新するデータポケットとフィールドなどを選択するだけです。この記事では、データの作成と更新の基本的な操作方法を紹介します。
上記のステップを説明するために、注文情報を閲覧するための次のような販売履歴データポケットがあるとします。販売履歴データポケットには「ID」、「顧客名」、「注文日」、「商品名」、「数量」、「小計」、「注文状況」フィールドがあります。
それでは、PlatioPutコンポーネントを使って販売履歴データポケットにデータを登録してみましょう。
PlatioPutコンポーネントを配置する
フローデザイナーの左下にあるコネクションペインでPlatioコネクションを作成します。Platioコネクションの作成方法については、Platioコネクションの作成を参照してください。作成したPlatioコネクションをワークスペースにドロップして表示されるリストからPlatioPutコンポーネントを追加します。
Platioレコードの追加
まずは、販売履歴データポケットに新しいレコードを追加してみましょう。
最初にPlatioPutコンポーネントをダブルクリックしてPlatioビルダーを開きます。その後、Platioビルダーの左側のペインで「販売履歴」を選択します。
追加するレコードに値を設定する必要があるフィールドを選択します。選択するにはフィールド名の隣にあるチェックボックスをチェックします。ここでは、データポケットで定義したすべてのフィールド、つまり、「ID」、「顧客名」、「注文日」、「商品名」、「数量」、「小計」のチェックボックスをチェックします。
Platioビルダーの下側にある「保存」をクリックするとPlatioビルダーで設定した内容が保存されます。そして、PlatioPutコンポーネントの入力ストリームには選択したフィールドが自動的に設定されます。
出力ストリームには選択したフィールドに加えて「_RecordId」というフィールドが自動的に追加されます。
フローデザイナー右上のインスペクターを見てみると、PlatioPutコンポーネントの「コレクション」プロパティには「販売履歴」が、「実行する処理」プロパティには「追加」がそれぞれ設定されているのが分かります。先ほどPlatioビルダーで「実行する処理」は選択しませんでしたが、デフォルトの値が「追加」なので「追加」が自動的に設定されていますね。
Platioと連携するマスターデータは、データベース、CSVファイル、外部のWebサービスなどのデータになるでしょう。今回は、CSVファイルからデータを取得してPlatioと連携する、次のようなフローを作成してみました。
FileGetコンポーネントで読み込むCSVファイルには次の1レコードが保存されています。
ID | 顧客名 | 注文日 | 商品 |
数量 | 小計 |
4 | 斉藤あおい | 2024-01-06 | 即席めん | 10 | 1500 |
PlatioPutコンポーネントの直前に配置したMapperコンポーネントをダブルクリックしてフィールドをマッピングします。
フローを実行すると、Platioの販売履歴データポケットに新しいレコードが追加されます。Platioデータビューアーで追加された新しいレコードを確認できます。
キーによるレコードの更新
伊藤ひろみさんの購入した商品の商品名は「保存食セット」ではなく「非常食セット」の誤りでした。PlatioPutコンポーネントで商品名を変更してみましょう。販売履歴データポケットでは「ID」がレコードを識別する一意のキーとなっていますので、キーを指定してレコードを更新します。
PlatioPutコンポーネントをダブルクリックしてPlatioビルダーを開きます。Platioビルダー上部の「実行する処理」メニューで「更新」を選択します。
フィールドリストの「キー」列でキーとなるフィールド、今回は「ID」のチェックボックスをチェックします。
そして「選択」列で値を更新するフィールド、今回は、「商品名」のチェックボックスをチェックします。
Platioビルダーの下側にある「保存」をクリックするとPlatioビルダーで設定した内容が保存されます。PlatioPutの入力ストリームには、先ほど選択した「ID」と「商品名」フィールドが定義されていることが確認できます。
次のレコードをMapperコンポーネントでPlatioPutの入力ストリームにマッピングします。
ID | 商品名 |
3 | 非常食セット |
フローを実行すると、PlatioPutコンポーネントは「ID」が一致するレコードの「商品名」の値を更新します。Platioデータビューアーで、「ID」が「3」のレコードの「商品名」の値が「非常食セット」に更新されたことが確認できます。
これでキーによるレコードの更新ができるようになりました。これを使えば、マスターデータからPlatioのデータポケットへの連携は簡単に実現できます。例えば、マスターデータベースで変更されたレコードを、RDBGetコンポーネントを使用して取得し、キーと更新するフィールドをマッピングするだけでPlatioのデータポケットを更新できます。
注意:キーとして使用するフィールドは、Platio Studioのフィールドの設定で「検索可能」にチェックする必要があります。 |
複数レコードの更新
PlatioPutコンポーネントでPlatioのレコードを更新する場合、キーとして複数のキーを指定することができます。複数のキーを指定すると、ANDで結合された条件となります。また、指定したキーがPlatioの複数のレコードにマッチした場合は、マッチしたすべてのレコードが更新されます。
この機能を使うと、例えば、販売履歴データポケットで「顧客名」と「注文日」をキーとして指定します。そうすれば、キーにマッチしたレコードは同じ顧客が同じ日に注文したレコードとなります。そして、値を更新するフィールドとして今回のデータポケットにはありませんが「キャンセルフラグ」フィールドを指定してその値を「TRUE」に更新することで、指定された「顧客名」と「注文日」のすべての注文を強制的にキャンセルするというようなことも可能でしょう。
PlatioPutコンポーネントのキー指定では、「=」(イコール)による比較でレコードを検索します。「!=」(ノットイコール)や不等号は使用できません。また、ORによる複合検索もできません。しかし、特殊なフィールドの$fromや$to、$fromTimestamp、$toTimestampを使用し、日付範囲を指定してレコードを検索することができます。例えば、$fromを使用して、レコードの更新時刻が指定日時より新しいレコードを検索することができます。詳しくはPlatioPutコンポーネントのヘルプの「更新時のキーにするフィールドを指定する」の項目をご覧ください。
注意:キーとして使用するフィールドは、Platio Studioのフィールドの設定で「検索可能」にチェックする必要があります。 |
添付画像の更新
販売履歴データポケットに注文された商品の商品画像のフィールドがあったとします。もしも、商品の画像に変更があって、販売履歴データポケットの各注文の商品画像を更新しなければならなかったとしたらどうしますか?
Platioデータビューアーを使って画像を手動で更新することもできますが、更新対象の注文が多いときにはそれは現実的ではありません。
PlatioPutコンポーネントは文字列や数値などの値だけでなく画像も更新できますので、PlatioPutコンポーネントを使って画像を更新してみましょう。ここでは、販売履歴データポケットの「商品画像」フィールドを更新してみます。あ、これまで販売履歴データポケットには「商品画像」フィールドはなかったのですが、実は「商品画像」フィールドはあったのです。(笑)
PlatioPutコンポーネントをダブルクリックしてPlatioビルダーを開き、「商品画像」という名前のフィールドのチェックボックスをチェックします。
PlatioPutコンポーネントは、ローカルフォルダーにある画像ファイルを読み込んでPlatioの画像フィールドを更新します。まずは、更新したい画像ファイルが入っているフォルダーをPlatioPutコンポーネントの「添付データ読込先」プロパティで指定します。そして、直前に配置したMapperコンポーネントで、フォルダー内の画像ファイルのファイル名を「商品画像」フィールドにマッピングします。例えば、「非常食セット.png」という値をマッピングします。後はフローを実行するだけです。たったこれだけの手順で画像を更新することができるんです。
画像ファイルの種類のことを専門用語でコンテントタイプと言います。PlatioPutコンポーネントはファイルの拡張子(これは .png とか .jpg とかファイル名の最後に付いている部分のことです)からコンテントタイプを自動的に判断します。しかし、ファイルの拡張子とコンテントタイプが違うことが稀にあります。その場合は、Platioビルダーで「フィールド名 contentType」というフィールドを選択して、Mapperコンポーネントでコンテントタイプの値をマッピングします。上記の例だと、「商品画像 contentType」というフィールドを選択します。 |
今回は、画像を更新しましたが、同じ手順でビデオ、音声などのフィールドを更新できます。データポケットにビデオのフィールドがある場合に、ビデオが更新されるたびにPlatioPutコンポーネントを使用して自動的にデータポケットのビデオのフィールドを更新するということもできますね。
レコードのUpsert
定期的にマスターデータをPlatioのデータポケットに同期したいことってありますよね? 特に、前回の同期処理の後に変更があったレコードをPlatioのデータポケットに同期するにはどうすればよいでしょうか?
一般的に、これを実現するには少し複雑なフローを作成しなければなりません。まず、マスターデータで追加・変更のあったレコードを取得し、そのレコードがPlatioのデータポケットに存在するかどうかを確認します。そして、その結果からPlatioのデータポケットに追加するか更新するかを決定する必要があります。
このようにフローで作成すると複雑になる処理を、PlatioPutコンポーネントを一つ配置するだけで実現できます。
このような追加と更新を一度に行う処理のことをUpsert(アップサート)と呼びます。 |
それでは、PlatioPutコンポーネントでUpsert処理を実行してみましょう。まずはいつものように、PlatioPutコンポーネントをダブルクリックしてPlatioビルダーを開きます。Platioビルダーの上部にある「実行する処理」で、「更新/追加(ユニークキー指定)」を選択します。
この処理を選択すると、PlatioPutコンポーネントはユニークなキーを使用してUpsertを実行します。つまり、キーの値にマッチするレコードがPlatioのデータポケットに存在しないときはレコードを追加して、存在する時はレコードを更新します。
「キー」列には、Platio Studioのフィールドの設定で「検索可能」と「値の重複を許さない」の両方にチェックされているフィールドが表示されます。キーは一つだけしか選択できません。複数のキーを選択するとエラーが表示されます。ここでは、「ID」をキーとして指定します。
次に、追加・更新するフィールドを選択します。Platioのデータポケットにキーにマッチするレコードが存在しない場合は、レコードが追加されますので、レコードが追加されるときに必要なすべてのフィールドを選択する必要があります。後はこれまで説明したようにMapperコンポーネントでキーのフィールドとそれ以外のフィールドにマッピングするだけです。フローを実行すると、Platioのデータポケットに「ID」にマッチするレコードが存在しない場合はレコードが追加され、「ID」にマッチするレコードが存在する場合は、そのレコードが更新されます。
更新/追加モードの使用
複数のキーを使用してUpsertしたい場合もあります。例えば、販売履歴データポケットで「顧客名」と「注文日」の2つのキーを指定して、同じ顧客が同じ日に注文した情報を変更する場合です。
この場合は、Platioビルダーで「実行する処理」として「更新/追加(ユニークキー指定)」ではなく「更新/追加」を指定します。「更新/追加」を指定すると、「キー」列でのキーフィールドを複数選択できるようになります。
後はこれまでと同様に、キー以外の更新するフィールドを選択し、Mapperコンポーネントで選択したフィールドにマッピングするだけです。
それでは、「実行する処理」の「更新/追加(ユニークキー指定)」と「更新/追加」の違いは何でしょうか? どちらを選択すればよいのでしょうか?
「更新/追加(ユニークキー指定)」は単一のフィールドで一意のキーを指定可能な場合に選択します。販売履歴データポケットであれば「ID」は単一のフィールドで一意のキーとなっていますので、「ID」をキーとしてUpsertする場合はこちらを選択します。ユニークキー指定によるUpsertは、バッチ処理にも対応していて非常に効率的で高速に実行することができます。PlatioPutコンポーネントを使ってUpsert処理を実行する場合は、まずは、「更新/追加(ユニークキー指定)」で実現できるかどうかを考慮してください。
それ以外の場合、つまり、複数のキーを指定する必要がある場合は、「更新/追加」を選択します。ただしこの場合は、ユニークキー指定に比べてPlatio APIのリクエスト回数が多くなりますので、Platio APIのリクエスト回数制限を超えないように検証を十分に行ってください。
注意:「実行する処理」として「更新/追加」を指定した場合、「キー」として使用するフィールドは、Platio Studioのフィールドの設定で「検索可能」にチェックする必要があります。 |
これでPlatioPutコンポーネントの説明は終わりになりますが、PlatioPutコンポーネントを使えば、マスターデータとPlatioのデータポケットを簡単に連携することができます。マスターデータの変更をきっかけに連携処理を実行すれば、Platioのミニアプリ内のマスターデータの情報はいつでも最新の情報にすることができますね。
その他のガイド
フィールドを検索できるようにする
フィールドをキーとして使用するためには、Platio Studioで対象のフィールドを検索可能にする必要があります。さらに、「更新/追加(ユニークキー指定)」を使用してUpsertを行う場合は、値の重複を許さない設定にする必要があります。Platio Studioのデータポケットの設定画面で、フィールドのヘッダーにある設定ボタンをクリックします。
フィールドの編集画面で、フィールドを検索可能にするには「検索可能」をチェックします。それに加えて、「更新/追加(ユニークキー指定)」を使用してUpsertを行う場合は、「値の重複を許さない」をチェックします。
もっと詳しく
PlatioPutコンポーネントには記事で紹介していない次のような機能があります。
- ユーザーや位置情報のようなフィールドを更新する
- レコードIDや日時の範囲を使ってキー指定する
詳細はPlatioPutコンポーネントヘルプを参照してください。