連載Blog – 第3回:トランスフォーメーションフローでデータを取り込む
公開日: 最終更新日:
前回は、ダッシュボードの完成イメージを作成しました。あとはダッシュボードを作成するために必要な工程に沿って手を動かすだけなので、8割方完成したと言っても過言ではないでしょう。
本連載を通じて、フィールド名は【隅付き括弧】、Yellowfinの設定項目および選択項目については『二重鉤括弧』、手入力が必要なパラメーターは囲み線と網掛けで記載することとします。 (丸括弧) や「鉤括弧」については特定のルールを定義していませんので通常の句切り符号としてお読みください。
◎製品資料をCheck!Yellowfinについて理解を深めよう↓
トランスフォーメーションフローでデータを取り込む
Yellowfinのトランスフォーメーションフロー機能を使用して、Amazonの注文履歴データをデータベースに取り込んでいきたいと思います。今回用意するものはこちらです。
- 注文履歴データ (csv)
- データを格納するためのデータベース
- Yellowfin
注文履歴データは、Retail.OrderHistory.3.csvを使用します。ファイル名の3ってなんでしょうね?1と2があるわけでもなく。本題には関係ないので気にせず進めることにします。
データを格納するためのデータベースは、PostgreSQLを例として紹介します。
Yellowfinは、トランスフォーメーションフローの機能が使用できる環境をご準備ください。
データベースを作成する
注文履歴データを格納するデータベースをPostgreSQLに作成します。PostgreSQL用のGUI管理ツールpgAdmin4を使用すると簡単にデータベースを作成することができます。
右クリック>作成>データベース の簡単操作
今回は、datawarehouceという名前のデータベースを1つ作成しました。
データソース接続を作成する
YellowfinからPostgreSQLに作成したデータベースに接続します。高度な接続エディターで、『パラメーター』>『書き込み可』 を有効に設定することで、トランスフォーメーションフローを使用してこのデータベースにデータを取り込むことができるようになります。
書き込み可の設定を有効に 。
これで、Yellowfinのトランスフォーメーションフロー機能を使用して注文履歴データのcsvファイルをデータベースに取り込む準備ができました。
トランスフォーメーションフローを作成する
インプットステップ、フィルターステップ、アウトプットステップの3つのステップを使用して、注文履歴データのcsvファイルをデータベースに取り込みます。
インプットステップ
インプットステップではYellowfinにcsvファイルをアップロードして、分析に使用する項目を取捨選択していきます。
今回必要な項目は以下の4つです。
- 【Order Date】
- 【Total Owed】
- 【ASIN】
- 【Product Name】
フィルターステップ
フィルターステップでは、分析に不要な行を除外します。注文履歴データにはキャンセルされた注文も含まれているので、【Total Owed】が0よりも大きいという条件のフィルターを設定して、キャンセルされた注文を除外します。
※ 注文履歴データには【Order Status】というフィールドがあるのですが、Amazonの都合でキャンセルされた商品や誤配達されてキャンセル扱いになった商品などはステータスがキャンセルになっていないようなので、本連載では【Total Owed】で判定することにしました。
次に、データを分析しやすいかたちに変換・整形していきます。これは他のステップで実施しても良いのですが、今回は他のトランスフォーメーションステップを使用しないため、フィルターステップで変換・整形を実施します。
【Order Date】が文字列 (TEXT) になってしまっているので、Text to SQL Timestampコンバーターを適用して、タイムスタンプ (TIMESTAMP) に変換します。日付の書式にはMM/dd/yyyy HH:mm:ss Zと入力します。ZをつけることによってUTCからJSTへの変換も同時に行ってくれます。
【Total Owed】も文字列 (TEXT) になっています。Text to Numericコンバーターを使用して数値 (NUMERIC) に変換したいところなのですが、注意しなければならないのが、【Total Owed】には桁区切りのカンマが含まれているという点です。数値以外の文字や記号が混在しているとエラーが発生してしまうので、検索と置換を使用してカンマを取り除いてから、Text to Numericコンバーターを適用しましょう。
検索欄に , (カンマ) を入力、代替テキスト欄には何も入力せずにルールを追加すると【Total Owed】から桁区切りのカンマを取り除くことができます。
商品をカテゴライズするためのフィールドが必要なので、【ASIN】フィールドを複製して、【Category】というフィールドを作成します。【Category】に検索と置換を使用して、10桁の【ASIN】を「書籍」と「書籍以外」に変換します。正規表現を使用すると簡単に変換することができます。書籍は、^[0-9][a-zA-Z_0-9]*、書籍以外は、^B0[a-zA-Z_0-9]* で検索することでそれぞれにカテゴライズすることができます。
正規表現を有効にするのを忘れずに。
アウトプットステップ
アウトプットステップでは、データベースにテーブルを作成して加工したデータを格納します。データベースを選択では、最初に作成したデータソース「datawarehouce」を選択します。『テーブルの作成方法』は『存在しない場合に作成する』を選択してください。新しいテーブル名は、注文履歴データが格納されるテーブルなので、シンプルにorderにします。『更新タイプ』については、今回は1度しかデータを取り込まないので、『切り捨て』でいいかなと思います。
更新タイプ『挿入』だと実行する都度データが増えてしまうので『切り捨て』を指定します。
トランスフォーメーションフローを実行する
保存したトランスフォーメーションフローは、閲覧ページから実行してみましょう。右下のメニューアインコンをクリックするか、右クリックすると、トランスフォーメーションフローを実行することができます。
右クリックで実行します。
実行するとサマリーが表示されます。今回のトランスフォーメーションフローは処理も少ないので数秒と待たずに完了すると思います。
サマリーに成功と表示されていればデータ取り込みは完了です。
orderテーブルが作成されていて、データが取り込めていることがpgAdmin4からも確認できると思います。
以上で注文履歴データをデータベース化することができました。
次回は、Yellowfinのビュー機能を使用して、データ分析の準備を進めていきたいと思います。