今回は BigQuery に関する自動工程について説明します。

BigQuery は Google Cloud Platform にて提供されているプロダクトで、ビッグデータを格納し、超高速で解析することができるサービスです。ビッグデータを活用している多くの企業で利用されています。

  • この自動工程は無料トライアル版などの Google Cloud Platform では動作しません(課金の請求先の登録が必要です)
  • 本記事は、すでに BigQuery を利用している方を対象に書かれています
  • BigQuery について、詳しくは BigQuery のドキュメントをご覧ください。

Google BigQuery と連携する自動工程について

まず、[Google BigQuery: データ追加]の自動工程について簡単に説明します。

Google BigQuery: データ追加

BigQuery のテーブルにデータを1行追加します。追記するテーブルはプロジェクトID、データセットID、テーブルID で指定します。指定できるテーブルスキーマのフィールドは最大7個です。サフィックスを指定してテンプレートテーブルを作成することもできます。

[Google BigQuery: データ追加]設定画面

BigQuery と Questetra の連携設定

Questetra と BigQuery との連携設定を行います。

  • HTTP 認証設定を追加するにはシステム管理者権限が必要です
  • 追加登録された HTTP認証設定は、同一ワークフロー基盤の他のアプリでも共有されます

Questetra のワークフローアプリの編集画面にて上記の自動工程アイコンを設置後、「Google BigQuery: データ追加」の設定項目の「C1: OAuth2 設定」の[設定はこちらから]をクリックすると「HTTP 認証設定 Google BigQuery API」という設定画面が開きます。

[追加]をクリックし、[名前]を指定します。(任意の文字列:後で見て分かり易いものが良いでしょう。)

追加した設定の[トークンの取得]をクリックすると Google の認証画面へと移ります。

BigQuery を操作するアカウントで連携を許可します。

これで BigQuery との OAuth2 認証のトークンが取得されました。([トークンの取得]ボタンの上部に「○(リフレッシュトークン)」と表示されます。)

「Google BigQuery: データ追加」の設定にもどり、「C1: OAuth2 設定」で追加した設定の名前を選択して指定します。

BigQuery テーブルを作成する

Questetra BPM Suite からデータを受け入れるテーブルを BigQuery に作成します。

  • テスト運用するのであれば、新規プロジェクトを作成して使用してください

プロジェクトにデータセットを作成します。作成したデータセットのプロパティを開き、テーブルを作成します。

テーブルの作成元は[空のテーブル]を選択し、テーブル名を指定します。スキーマにフィールドを1つずつ追加してゆきます。フィールドはテーブルの列となります。名前、型、モードをそれぞれ指定します。型にはQuestetra BPM Suite から追加するデータのデータ型に合わせて選択します。[Google BigQuery: データ追加 ]がサポートしているのはSTRING, BYTES, INTEGER, FLOAT, NUMERIC, BIGNUMERIC, BOOLEAN, TIMESTAMP, DATE, TIME, DATETIME です。モードは NULLABLE(空を許可する)か REQUIRED(必須)のいずれかを選択してください。フィールドは7つまで設定できます。

テーブル作成画面

全ての必要事項を指定したら、[テーブルを作成]をクリックします。エクスプローラに表示されているデータセットの下に作成したテーブル名が表示されます。作成したテーブルを開いて[詳細]タブからプロジェクトID、データセットID、テーブルID をそれぞれ確認します。「テーブルID」の欄にそれらすべてが列記されています。(パスの表記と同様に、”プロジェクトID:データセットID.テーブルID” と表示されています。)[Google BigQuery: データ追加]の設定で指定するので、それぞれメモしておきます。

テーブル詳細画面

同様に[スキーマ]タブを開いて「フィールド名」に表示されている文字列をメモしておきます。 [Google BigQuery: データ追加 ]ではこれらの文字列を対象項目として値を追記します。

テーブルスキーマ画面

サンプルアプリ

この自動工程を使って作成したサンプルアプリのワークフロー図がこちらです。

このアプリは 「入力」工程で指定した値が BigQuery のテーブルに追加される動作を確認するだけのものです。実際の業務で使用する場合は、「問い合わせ対応」や「Web フォーム申込受付」といった顧客情報が入力される業務プロセスに[Google BigQuery: データ追加] の工程を単体で設置するだけで BigQuery にデータが蓄積されて行きます。

なお、「データ変換」工程(データ更新)では文字列型(複数行)の値を文字列型(単一行)に変換する例と日付型に現在日付を指定する例を記載しています。

ワークフローアプリの設定

既存のアプリに[Google BigQuery: データ追加]工程を追加する場合は、すでに定義されているデータ項目を利用して設定します。BigQuery テーブルのフィールド名を指定し、値にワークフローのデータ項目への参照式を設定します。
ただし、追加するデータの形式は BigQuery の仕様に合わせる必要があります。(複数行の文字列は不可など)[データ更新]の自動工程を利用するなどして適当な形式に変換するなどしてください。詳細に関しては以下のドキュメントを参照してください。

BigQuery ドキュメント

データ項目の設定

サンプルではデータ項目は以下のようになっています。

データ項目名タイプ必須「入力」工程説明
件名編集可プロセスの件名です。
氏名文字列型
(単一行)
編集可
社名文字列型
(単一行)
編集可
追加日日付型
(Y/M/D)
編集可 直前の[データ更新]工程にて現在日付が設定される
性別選択型
(ラジオボタン)
編集可 「男性」「女性」の表示ラベルの2つの選択肢
選択肢ID をそれぞれ “M”と”F”と指定
年齢選択型
(ラジオボタン)
編集可 表示ラベル、ID ともに以下とする6個の選択肢
“20s” ”30s” ”40s” ”50s” ”60s” “70s+”
住所文字型
(複数行)
編集可 住所等、改行を含む値
単一行データ文字型
(単一行)
表示なし 複数行のデータから[データ更新]工程によって改行が除去された値を格納する
「テーブル追記」工程(Google BigQuery: データ追加)の設定

「Google BigQuery: データ追加」の設定項目は以下のとおりです。

項目名必須説明
C1: OAuth2 設定Google への接続に使用する HTTP 認証設定名を指定します。指定する名前の認証設定であらかじめOAuth2 トークンを取得しておく必要があります(「BigQuery と Questetra の連携設定」を参照)。
C2: プロジェクトID「BigQuery テーブルを作成する」でメモしたプロジェクトID を指定します
C3: データセットID「BigQuery テーブルを作成する」でメモしたデータセットID を指定します
C4: テーブルID「BigQuery テーブルを作成する」でメモしたテーブルID を指定します
C5: テンプレートサフィックステンプレートテーブルを使用する場合のみ指定します*
C6F: フィールド_1(対象とする)テーブルスキーマのフィールド名
(例:Name)
C6V: 値_1追加する値が格納されているデータ項目への参照式
(例:{#q_Name})
C7F: フィールド_2 (対象とする)テーブルスキーマのフィールド名
(例:Company)
C7V: 値_2 追加する値が格納されているデータ項目への参照式
(例:{#q_Company})
C8F: フィールド_3(対象とする)テーブルスキーマのフィールド名
(例:Add_date)
C8V: 値_3 追加する値が格納されているデータ項目への参照式
(例:{#q_Added_date})
C9F: フィールド_4(対象とする)テーブルスキーマのフィールド名
(例:Gender)
C9V: 値_4 追加する値が格納されているデータ項目への参照式
(例:{#q_Gender?.![value]} 選択肢ID を参照)
C10F: フィールド_5(対象とする)テーブルスキーマのフィールド名
(例:Age)
C10V: 値_5 追加する値が格納されているデータ項目への参照式
(例:{#q_Age})
C11F: フィールド_6(対象とする)テーブルスキーマのフィールド名
(例:Address)
C11V: 値_6 追加する値が格納されているデータ項目への参照式
(例:{#q_Address_single_lilne})
C12F: フィールド_7
C12V: 値_7

* テンプレートテーブルは同じスキーマのテーブルを作成するための仕組みです。例えば、性別ごとにテーブルを作成し、データを格納するテーブルを分けることができます(サフィックスに「性別」を指定する場合、C5 は「_#{#q_Gender}」となります。)

テンプレート サフィックス値
templateSuffix(または –template_suffix)値には、英字(a~z、A~Z)、数字(0~9)、アンダースコア(_)のみを含める必要があります。テーブル名とテーブル サフィックスの最大連結文字数は 1,024 文字です。

テンプレート テーブルを使用したテーブルの自動作成

「データ変換」工程(データ更新)の設定

必要であれば「デ-タ変換」工程を設置して、入力データを BigQuery に登録できる形式に変換します。この例では、1. 文字列型複数行のデータを、改行を除去して文字列型単一行のデータ項目に設定する、2. 日付型データ項目に現在日付を設定する、という想定です。(日付型の初期値(プロセスの開始日)ではなく実際の追加日を登録する)

設定項目は以下のとおりです。

対象データ項目値または式
単一行データ#{#joiner.splitJoin(#q_Address, ' ')}
(文字列型複数行データ ” #q_Address” から改行を除去(半角スペースで区切り連結))
追加日#now
(現在日付を挿入)

実行すると BigQuery に以下のようにデータが追加されます。(テーブルサフィックスを利用した例)


今回は以上です。

%d人のブロガーが「いいね」をつけました。