Dr.Sum

AIブラウザ操作でDr.Sumのデータフローに外部DBを取り込む|型の壁と件数

AIブラウザ操作でDr.Sumのデータフローに外部DBを取り込む|型の壁と件数
Ryosuke Ishii
図0:AIブラウザ操作で Dr.Sum を動かす流れ(イメージ図)。この記事は、外部のデータベースから取り込む部分
図0:AIブラウザ操作で Dr.Sum を動かす流れ(イメージ図)。この記事は、外部のデータベースから取り込む部分

Dr.Sum 6.0 のデータフローで、外部のデータベース(PostgreSQL)の表を取り込む作業を、AIブラウザ操作(Claude)で進めました。コネクタを作り、型の合わない列を直し、13表・約128万行を取り込んで、件数と値が切れていないかを確かめるまでの記録です。

この記事は、弊社が自社の環境で試した記録です。Dr.Sum の開発元のメーカーが出している公式の手順ではありません。データフローは Dr.Sum の画面の操作で作り、定義のファイルを直接書き換えることはしていません。

結論

  • コネクタの入力、13本のクエリーの追加、インポートまで、AIブラウザ操作で進められた。人が入れたのは取り込み元のパスワードだけ
  • PostgreSQL の表をそのまま入力にすると、タイムゾーン付きの日時で止まる。型を変換する SELECT を入力にすると通った
  • 13表・1,278,796行が約2分で入り、件数は元のデータベースと全表で一致した。型の変換で255文字に切ったので、切れた可能性のある値の件数も、取り込んだあとに数えた

AIブラウザ操作とは:AI がブラウザの画面を読み取り、人と同じようにクリックや文字の入力をして、Web のアプリを操作することです。この記事では、データパレードがこの方法で Dr.Sum を操作した検証を、「AIブラウザ操作」と呼んでいます。開発元のメーカーが提供する AI の機能(Dr.Sum の生成AI)とは別のものです。

Claude in Chrome とは:Anthropic 社の AI「Claude」を、Google Chrome の拡張機能として動かす仕組みです。Claude が開いているページの内容を読み、クリック・入力・画面の切り替えを行います。この記事の取り込みは、Mac の Claude が画面の写真を見て操作する方法で行い、確かめの一部で Claude in Chrome を使いました。Dr.Sum の Web Console へのログインは、パスワードが空の検証用アカウントで Claude が行いました。

AIブラウザ操作で目指すこと

「この店の売上を、毎朝の集計表で見られるようにして」と頼むと、AI が接続を作り、データを取り込み、確かめてから人に渡す。人がするのは、パスワードの入力と「取り込んでよいか」の判断だけ。この記事は、そのうち「外のデータベースから取り込む」部分を、今どこまで AI に任せられるかを確かめた記録です。

Dr.Sum 6.0 のデータフローで取り込む流れ

データフローは、Dr.Sum へデータを取り込むまでの準備を画面で組み立てる機能です。取り込みは、次の4つの手順で進みます。

データ取り込みのステップ(コネクタ → データフロー → インポート → ジョブ)
データ取り込みのステップ(コネクタ → データフロー → インポート → ジョブ)
  • コネクタ:取り込み元への接続(PostgreSQL などのデータベース、CSV・Excel のファイル、同じ Dr.Sum の表)
  • データフロー:「入力 → 加工 → 出力」をレーンごとに並べる
  • インポート:データフローを流して Dr.Sum の表に入れる
  • ジョブ:決まった時刻やファイルの到着で、インポートを動かす

出力先は Dr.Sum の表だけです。今回は、PostgreSQL のデータベースにある、ある飲食店のアクセス解析(Google アナリティクス 4。以下 GA4)と Instagram の13表を取り込みました。公開の了承を得たデータです。

項目内容
Dr.SumDr.Sum 6.0(検証用の環境)
取り込み元PostgreSQL(13表)
AIClaude(Mac の Claude が、仮想環境の Windows の画面の写真を見て操作)
確かめMCP(Dr.Sum Local MCP Server)で、Dr.Sum に読み取りの SQL を流して数えた

コネクタを作る:パスワードだけ人が入れた

コネクタの入力は、AIブラウザ操作で進められました。データフロー管理の画面で PostgreSQL を選び、ホスト・データベース名・ユーザーを Claude が入れ、パスワードだけ人が入れて接続テストを通しました。

コネクタの種類(ファイル・データベース・Dr.Sum)
コネクタの種類(ファイル・データベース・Dr.Sum)
作ったコネクタの一覧
作ったコネクタの一覧

つまずいたのは2つです。

  • クリックが1つずつずれて、値が隣の欄に入ることがあった。1欄ずつ「クリックして待ち、全部選んでから入れる」に変えて入れ直した
  • 「_」を打つと「\」に化けた。Mac と Windows のキーボード配列の違いによるもの。Windows のクリップボードに文字を置いて貼り付ける方法で避けた

そのままでは取り込めなかった:タイムゾーン付き日時の型の壁

PostgreSQL の表をそのまま入力に足すと、エラーで止まりました。

時刻型のデータ変換に失敗しました。data format error. data(12:22:38.237372+09)

PostgreSQL のタイムゾーン付きの日時(小数秒と「+09」が付いた形。PostgreSQL の日時の型)を、そのままでは読めません。

時刻型のデータ変換のエラー
時刻型のデータ変換のエラー

そこで、表をそのまま足すのをやめ、「データベースクエリー」で型を変換した SELECT を入力にしました。Claude が13表の列と型を見て、Dr.Sum の表の決まりに合わせた SELECT を書きました。

PostgreSQL 側直し方理由
長い文字列(text など)255文字で切って VARCHAR(255) にDr.Sum の表の VARCHAR は255文字まで
桁数の無い numericnumeric(33,10) のように桁数を決める桁数が無いと精度0として扱われる
タイムゾーン付きの日時日本時間に直して文字列にそのままでは読めない
列名 date・timestamp・_loaded_atreport_date・posted_at・loaded_at に変更予約語と「_」で始まる名前は使えない

13本のクエリーを足して、インポートする

データフローでは、処理の流れを「レーン」と呼ぶ横の列で並べます。データベースクエリーの画面で SQL を貼り、[SQLを解析してカラム一覧に反映]を押して、名前を付けて追加します。これを13回、AIブラウザ操作で繰り返しました。13本で約30分です。

データベースクエリーを足した最初のレーン
データベースクエリーを足した最初のレーン
13本のレーンが並んだデータフロー
13本のレーンが並んだデータフロー

インポートでは、取り込み先のデータベースと13本のレーンを選び、「テーブルを作成してインポート」で流しました。

インポートの設定
インポートの設定

13表・計 1,278,796 行が約2分で入りました。一番大きい表(約83万行)は約38秒です。取り込んだ件数は、元のデータベースの行数とも、Dr.Sum で数えた件数(MCP)とも、全表で一致しました。

インポートの完了
インポートの完了
作ったデータフローの一覧
作ったデータフローの一覧

件数は一致した。切れた可能性のある値も数えた

件数が合っても、値が全部来たとは限りません。今回は型の変換で、長い文字列を255文字で切っています。切れた値はちょうど255文字になるので、MCP で LENGTH(列) = 255 の件数を数えました。元からちょうど255文字だった値も数に入るので、「切れた可能性のある件数」です。

表列255文字ちょうど
Instagram の投稿情報画像の URL空でない値の全部
Instagram の投稿情報サムネイルの URL空でない値の全部
Instagram の投稿情報投稿の文章約8割
Instagram のコメントコメントの文章1件

GA4 の8表は、255文字ちょうどの値が1件も無く、一番長い列でも210文字でした。Instagram の画像とサムネイルの URL は、空でない値がすべてちょうど255文字でした。元の URL がどれも255文字より長く、途中で切れたと見られます。

今回は、取り込んだあとに LENGTH(列) = 255 を数えることで、切れた可能性のある件数を出しました。確かな件数は、取り込み元で元の長さを数えて突き合わせる必要があり、今回はそこまでしていません。

AIブラウザ操作で人の手が要ったところ

場面何が起きたかどうしたか
取り込み元のパスワードパスワードは AI に渡さない決まり人が入れた
クリックと入力クリックが隣の欄にずれた/「_」が「\」に化けた1欄ずつ入れ直した/クリップボード経由で貼った
型の違いタイムゾーン付きの日時が読めない型を変換する SELECT を入力にした
文字列の長さ型の変換で、255文字を超える値を切った取り込んだあとに、切れた可能性のある件数を数えた

まとめ|AIブラウザ操作でデータフローに外部DBを取り込む要点

  • 今回の検証では、コネクタの入力から13本のクエリー、インポートまで、AIブラウザ操作で進められた。人が入れたのは取り込み元のパスワード
  • タイムゾーン付きの日時・桁数の無い数値・長い文字列・予約語の列名は、型を変換する SELECT を入力にして通した
  • 件数は全表で一致した。切れた可能性のある値は、LENGTH(列) = 255 で数えた

参考リンク

このシリーズの記事

  1. AIブラウザ操作でDr.Sumのデータフローに外部DBを取り込む|型の壁と件数(この記事)
  2. AIブラウザ操作でDr.Sumの生成AIにSQLと式を頼む|Claudeが検算
  3. AIブラウザ操作でDr.Sumのデータフローを一から作る|結合からジョブまで
  4. AIブラウザ操作でDatalizer for Webを使う|初期設定からAIまで

関連シリーズ(MotionBoard)

ABOUT ME
石井 亮介(りょうさん)
石井 亮介(りょうさん)
データパレード 代表取締役
㈱データパレードの代表取締役で、高田馬場の町中華「一番飯店」のChief Data Officerも務めています。BIツールのセールスエンジニア・システムエンジニア・カスタマーサクセス歴15年。大学のデータサイエンス教育で講師も担当してきました。現在は自社業務のほとんどをAIに移管し、AI10部署と50を超える自動処理が24時間動く「AI経営」を実践中。その実践知をこのブログで発信しています。
記事URLをコピーしました