目次
はじめに
どうもです。最近少しずつQlikにハマりはじめています。
今回は2021年?に登場したQlik Application Automation(QAA)を使って、
外部ソース(今回はGoogle Sheets)への書き込みを試してみます!
こんなイメージです。
※今回、実運用等を想定した制御など細部を考慮はしていないのでご了承ください
Qlik SenseアプリとQAAを組み合わせて実現しています。
QAAについて詳しく知りたい方はこちらを参照してください。
準備
以下を準備しておきましょう。- Qlik Cloudのアカウント
- Automation Creatorロール
- Qlik Cloudのナビゲーションメニューに自動化メニューがなければ、
テナント管理者にロール付与を依頼しましょう
- Qlik Cloudのナビゲーションメニューに自動化メニューがなければ、
- Googleアカウント(Sheets作成用)
- サンプルデータ(Google Sheetsにコピペしてください)
ID カテゴリ 数量 更新者 1 A 10 タナカ 2 B 10 タナカ 3 C 10 タナカ
いざ
①データ確認&更新用のQlik Senseアプリを作成
- Qlik Cloud上で新規にアプリを作成
- コネクションを作成
- 「Google Drive & Spreadsheets」のコネクタを選択し、必要に応じて情報を変更します(しなくてもOK)
- 「Authenticate」をクリック
- 画面に従いGoogleログインを行うと、Qlikからコード付与されるのでコピー
- 2のQlik画面に戻り、コードを貼り付け→「Verify」をクリック
仮に失敗したら、「Update」から上記手順3から再度行います - 「接続のテスト」をクリックし、「Coonection succeeded」を確認
失敗した場合は、上記手順をやり直しましょう - 画面右下の「作成」をクリックして、コネクション作成は終了
- データ接続
- データロードエディタを開く
- 今回接続するスプシのURLからキーをコピーします(d/~/editの間)
- 作成したコネクションから、データに接続していきます
- 「ListWorksheets」をクリックし、Spreadsheet Keyに手順2を貼り付けます
- 「Preview data」をクリック
- Previewに表示されるworksheetKeyの値をコピー
- 「GetWorksheetV2」をクリックし、Worksheet Keyに手順2を貼り付けます
- 「Preview data」をクリック
- スプシに含まれている全列にチェックが入っているか確認
- 画面右下「スクリプトを挿入」をクリックし、データロードエディターにスクリプトが挿入されているか確認
- 「データロード」をクリック
- データモデルビューアーで、適切にデータを取り込めているか確認
※項目名に「GetWorksheetV2」が含まれてしまうため、必要に応じてエディター内でas~以降を変更して、再ロードしましょう
ようやくデータ接続が終了しました
- データロードエディタを開く
- データ確認用のシート作成
- 「シート」に移動
- 「テーブル」をシートに追加し、スプシと同様の表を作成する
- アプリにデータ更新用のUIを作成
- 画面左下から変数を作成する
- 新規作成から以下のように4つ変数を作成する
- 変数ウィンドウを閉じる
- 「カスタムオブジェクト」>「Qlik Dashboard bundle」>「Variable input」をシートに追加
※今回は4つ追加するので、4回繰り返してください - 各Variable inputオブジェクトに、作成した変数ID、カテゴリ、数量を以下のように設定します
※それぞれのNameに各変数名が設定されていればOK - 1つ残っているVariable inputオブジェクトにドロップダウンを設定
設定箇所は上記と同様ですが、ここではInput box→Drop downで設定していきます - 「チャート」>「ボタン」をシートに追加する
- 「スタイル」>「基本設定」でタイトルの表示OFF、ラベルを入力する
- ボタンオブジェクトの「アクションとナビゲーション」>「アクションの追加」をクリック
- アクションで「自動化を実行」を選択し、以下の2項目にチェックをいれる
- 画面左下から変数を作成する
これでデータ確認用シートと更新用UIの準備が完了です。
②QAAの構築
それではQAAでこのようなワークフローを組んでいきます。
- 事前に上記で作成したボタンオブジェクトから「入力ブロックをコピー」をクリック
- ナビゲーションメニューから「分析」>「自動化」を開く
- 画面右上の「+自動化を作成」をクリック
- 「Blank automation」>「テンプレートの使用」をクリック
※テンプレートを使用すると、より簡単にQAA構築ができます - お好きなようにQAAに「Name」と「Description(説明)」を追加
「Save」をクリックすると、QAAの編集画面が表示される - 空いてるスペースで右クリック>「Paste Block(s)」をクリック
※「有効なデータがクリップボードにない」とエラーが出た場合は、QAAの構築の手順1を再度行ってください - Startブロックと貼り付けたブロックをドラッグ&ドロップで繋げる
- 「Qlik Cloud Services」>「Get Expression Value」ブロックをドラッグ&ドロップし、その前のブロックに繋ぐ
- 「Get Expression Value」ブロックを設定
(アプリの変数の値をQAA側に取り込むステップ)
- App Id に「Inputs」>「app」をクリック
※以後App Idを選択するときは、この通り行う - Expressionにアプリで作成した変数(vUpdate_ID)を手入力
- 上記手順9-1、2をあと2回分(vUpdate_数量/vUpdate_更新者)繰り返す
その際にブロックの複製やコピペなどを活用すると楽に作成できます
- App Id に「Inputs」>「app」をクリック
- 「Google Sheets」>「Update Cell」ブロックをドラッグ&ドロップし、その前のブロックに繋ぐ
- 「Update Cell」ブロックを設定
- Connectionタブ>「+Create Google Sheets connection」でQAA用のコネクションを作成
画面に従いGoogle アカウントの認証を完了する - 作成したコネクションを選択する
- Inputタブを開き、更新するセルを特定するための情報や更新値を設定する
まずは数量の値を更新するために以下の通り設定する
・Spreadsheet ID: 手入力(スプシで確認)
・Sheetname: 手入力(スプシで確認)
・Value: Get Expression Value 2 (更新値をこのブロックでQAA側に取得)
・Row: 以下に記載
・Column: 手入力(スプシで確認)
・Rowの設定
今回のIDは、スプシで「ID+1」の行に存在するため、Rowに数式を設定している
「Add formula」>「Math Functions」>「Add」> 以下の通り - 上記手順3を参考に、更新者の値を更新するブロックを作成
ValueとColumn設定値以外は変更不要なので、前ブロックを複製すると楽に作成できます
- Connectionタブ>「+Create Google Sheets connection」でQAA用のコネクションを作成
- 「Qlik Cloud Services」>「Do Reload」ブロックをドラッグ&ドロップし、その前のブロックに繋ぐ
- 「Do Reload」ブロックの設定
App Idは上記手順で実施した通りで、その他は未入力でもOK - 「Save」をクリックし、QAAを保存
- 最後にアプリに戻り、ボタンオブジェクトの以下プロパティで作成したQAAを選択する
これでQAA実行のトリガーに、このボタン押下が設定されたことになる
以上!!
試してみましょう。
実行結果
- 更新するレコードを選択、絞り込む
- 数量・更新者の入力ボックスに更新したい値を設定する
※ID、カテゴリは変数作成時に自動入力される仕組みにしています
※カテゴリは仕組み上不要ですが、ID以外の情報を確認し更新できるよう追加してみました - 更新実行ボタンを押下
⇩(約15秒後)※更新時間はデータ、リロード量などに依存します
成功!
おわり
いかがでしょうか。
QAAはノーコード、簡単な操作で、アプリケーション間の連携・自動化を実現可能です。Google Sheets以外にも、約70種のコネクターが用意されています。さらに年々コネクター、可能なアクションブロックが増加しています。
もちろん制約もありますが、オペレーションの工夫などで対応できる可能性もあると思います。BIで得られたインサイトからアクションへのスムーズな展開に貢献できるQAAのさらなるアップデートに期待したいです。
次回はその他DBへの書き込みを試してみようかな。それでは。