QlikとOpenAI APIをつないでみたら、自然言語でデータを聞けるようになった話

目次

はじめに:生成AIをQlikにくっつけてみた

最近「BI × 生成AI」という言葉をよく耳にします。
でも実際に「QlikのデータをChatGPTに聞く」ってどうやるの?
そんな素朴な疑問から、Qlik Sense と OpenAI API をつなげて遊んでみたのでご紹介します。

「社員がやってみたらこうなった」系の記事ですが、
実際に動かしてみると 業務にも使える可能性が見えてきました。

今回使った環境とツール

今回の試作で使ったのはこの3つ。

  • Qlik Cloud(Qlik Sense アプリと Qlik Automate)
  • OpenAI API(ChatGPTのエンジンをAPI経由で利用)
  • サンプルデータ(都道府県別の男女人口)

仕組みはシンプルです。

  1. Qlikのシートで質問を入力
  2. Qlik AutomateでOpenAI APIを呼び出し
  3. 回答をQlikのシートに返して表示

全体像はこんなイメージです。

OpenAI APIキーの取得と設定

まずはOpenAIのAPIを使うために、APIキーを取得します。
この手順を忘れると、Call URLブロックが動きません。

  1. OpenAI公式サイト でアカウントを作成
  2. ログイン後、メニューから「API Keys」を開く
  3. 「Create new secret key」をクリックして発行
  4. 表示されたキーをコピー(再表示できません)

このキーを、後述のQlik Automateの Call URLブロックの、Headers に設定します。

* APIキーは個人専用です。共有環境やGitHubにアップしないよう注意!

Qlikアプリの準備

まずはQlikにサンプルデータを入れました。
「都道府県ごとの男女人口」をインラインロードしています。

LOAD * INLINE [
都道府県, 男性人口, 女性人口
北海道, 2447000, 2834000
京都府, 1221000, 1339000
佐賀県, 396000, 425000

];

シートにはこんな要素を置きました。

  • 質問入力用のテキストボックス
  • 実行ボタン(「きいてみる」ボタン)
  • 回答表示用のテキストオブジェクト

また、変数も2つ作っておきます。

  • vPrompt:ユーザーの質問を格納
  • vAns:OpenAIからの回答を格納

AutomationでAPIを呼んでみる

次はQlik Automateの出番です。
フローはこんな感じ

ボタンを押すとAutomation起動

Apply Bookmarkで「今の選択状態」を保持

Get Straight Table Dataで選択したデータを取得

CSV形式の文字列に変換(例:「都道府県,男性人口,女性人口…」)

OpenAI API呼び出し(Call URLブロック)

回答を変数vAnsに保存(Update Variable + Save App)

Call URLブロックでのAPI呼び出しについて、ちょっと詳しく
ここではAPI呼び出しにCall URL を使っていますが、OpenAI専用のCreate Completion ブロックを使う方法もあります。Call URLはさまざまなAPI呼び出しに応用できるので、今回はこちらを使用しました。

Call URLの設定項目は以下の通り
・URL:OpenAIのAPI  https://api.openai.com/v1/chat/completions
・Method:POST
・Param:ここに、一般的なAPI呼び出しのbodyをJSON形式で記載します

{
  "model": "使用したいモデル名",
  "messages": [
    {
      "role": "system",
      "content": "OpenAIに投げるテキスト"
    },
    {
      "role": "user",
      "content": "\n\n以下のCSVデータに基づいて答えてください:\n\n"
    }
  ],
  "max_tokens": 300,
  "temperature": 0.2
}

・Headers:KeyーValue形式で、ヘッダーを記載。必要なKeyは、Authorizationと、Content -Typeです。

最初は「Temporary Bookmarkが反映されない」「JSONPathエラーが出る」などハマりどころもありましたが、
一度流れを掴むとスムーズに動きます。

実際に動かしてみた

試しに「京都府」と「佐賀県」を選択して、
質問欄に「特徴を教えて」と入力してみました。

返ってきた答えは例えばこんな感じ:

「京都府は比較的人口が多く、女性が男性よりやや多い傾向が見られます。

一方、佐賀県は人口規模が小さく、男女差は大きくありません。」

単に「東京が一番多いです」ではなく、
選択範囲を理解したうえで要約してくれます。

以下は、無茶振りしてみた時の回答例

これ、業務でどう使える?

遊んでみて「これは業務にも広がりそうだな」と感じました。

  • 自然言語でデータ分析→ 「売上の特徴を教えて」と入力するだけで要約してくれる
  • レポートの自動要約→ チャートを選択するとAIが文章にしてくれる
  • 社内データQ&A→ 「この数字の見方は?」と聞けばその場で答えてくれる

特にQlikは「ビジュアル化が強い」ですが、テキストでのインサイト提示は弱かった部分。
そこをAIで補えるのは大きな価値だと感じました。

コストとセキュリティの注意

  • OpenAI APIは従量課金制(数十円〜数百円で十分試せます)
  • APIキーは個人ごと発行・共有厳禁
  • 機密データを送る場合は、社内規定やデータマスキングに注意

まとめ:やってみたら結構面白かった

今回の実験では、

  • Qlikで選んだデータを
  • Qlik AutomateでCSV化して
  • OpenAI APIに投げて
  • 回答をシートに表示

という仕組みを作ってみました。
技術的にはシンプルですが、活用の可能性はとても広いと感じます。
今後は実データや他のAPIでも試してみたいですし、もっと面白い使い方があるかもしれません。

次は、ストレートテーブルをCSV化したものではなく、
チャートのグラフそのものをAPIに投げられるようにしてみます。

「こんな活用アイデアあるよ!」というご意見があれば、ぜひ教えてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次