Benri Data NLPの自然言語によるSQL生成デモ
Benri Data NLPは自然言語を入力することによりSQLを自動生成するwebベースのアプリケーションです。システム上で管理するテーブル定義やテーブル概要のメタデータを元に生成AIによりSQLを自動生成します。
このページでは実際にBenri Data NLPが自然言語からどのような分析クエリを生成できるかについての例を共有します。生成されるクエリと共に、そのクエリの生成意図や説明についても同時にコメントとして表示します。
1. Benri Data NLP上での分析可能対象テーブルについての問い合わせ
Benri Data NLPで分析できるテーブル名をリストしてほしい
tmpテーブルは除外してほしい
/*
意図: 利用可能なテーブル名をリストアップするSQLを生成します。このクエリは、特定のデータベース内で利用可能な全てのテーブル名を取得し、その中から"tmp"を含むテーブル名を除外するために使用されます。"tmp"を含むテーブルは一時的なデータやテストデータを含む可能性があるため、分析対象から除外することが一般的です。結果として得られるテーブル名のリストは、データ分析やその他のクエリで使用する基盤となります。
*/
SELECT tablename
FROM pg_tables
WHERE schemaname = 'public' AND tablename NOT LIKE '%tmp%';
クエリ実行結果としてはメタデータを管理するテーブル、売上伝票のヘッダであるVBAKと明細であるVBAPの3件が表示された。(tmpテーブルはデータロード時の中間テーブルなので除外した)

2. VBAKというテーブルについての問い合わせ
VBAKについて教えてほしい
/* VBAKテーブルからすべてのカラムのデータを取得するSQLクエリを生成します。このクエリは、販売伝票ヘッダの全情報を確認するために使用されます。各カラムは販売伝票の基本情報を表しており、受注日、販売組織、流通チャネル、得意先コードなどの重要なビジネスデータが含まれています。結果は販売伝票ごとの詳細情報をリストアップし、販売プロセスの管理や分析に役立ちます。 */
SELECT * FROM VBAK;
クエリ生成時説明コメント:
VBAKテーブルからすべてのカラムのデータを取得するSQLクエリを生成します。このクエリは、販売伝票ヘッダの全情報を確認するために使用されます。各カラムは販売伝票の基本情報を表しており、受注日、販売組織、流通チャネル、得意先コードなどの重要なビジネスデータが含まれています。結果は販売伝票ごとの詳細情報をリストアップし、販売プロセスの管理や分析に役立ちます。
クエリを実行することで検索結果の件数を表示すると共に格納されている実データサンプルも表示された。

3. VBAKとVBAPの関係についての問い合わせ
VBAKとVBAPの関係について教えてほしい
生成された説明とクエリ:
/* 販売伝票ヘッダ(VBAK)と販売伝票明細(VBAP)の関係を調査するためのSQLクエリを生成します。このクエリは、VBAKテーブルの各販売伝票に対して、関連するVBAPテーブルの明細行の数をカウントします。これにより、各販売伝票がいくつの明細行を持っているかがわかり、販売伝票とその明細の関係性を理解するのに役立ちます。 */
SELECT
VBAK.VBELN AS sales_document,
COUNT(VBAP.VBELN) AS detail_count
FROM
VBAK
LEFT JOIN
VBAP ON VBAK.VBELN = VBAP.VBELN
GROUP BY
VBAK.VBELN
ORDER BY
VBAK.VBELN;
クエリ生成時説明コメント:
販売伝票ヘッダ(VBAK)と販売伝票明細(VBAP)の関係を調査するためのSQLクエリを生成します。このクエリは、VBAKテーブルの各販売伝票に対して、関連するVBAPテーブルの明細行の数をカウントします。これにより、各販売伝票がいくつの明細行を持っているかがわかり、販売伝票とその明細の関係性を理解するのに役立ちます。

各伝票番号(ヘッダ)に対していくつの明細が含まれているかの表示を確認。

ちなみにカラム名「VBELN」について問い合わせを行ったところ、クエリと共に以下の説明結果を得た。
/* 販売伝票番号(VBELN)を取得するSQLクエリを生成します。このクエリはVBAKテーブルからすべての販売伝票番号を取得するために使用されます。この情報は、販売伝票の識別や後続の詳細データ分析に役立ちます。結果は販売伝票番号のリストとして表示され、各伝票の識別に使用できます。 */
SELECT VBELN
FROM VBAK;
4. 伝票の件数についての問い合わせ
テーブル名がわからなくても伝票の件数についての問い合わせが可能。
伝票の件数について教えてほしい
生成された説明とクエリ:
/* このSQLはVBAKテーブルから販売伝票の総件数を取得するためのものです。販売伝票の件数を知ることで、システム内での取引の活動量を把握することができます。結果は伝票の総数を示す単一の数値として表示されます。 */
SELECT COUNT(*) AS total_sales_documents
FROM VBAK;
クエリ生成時説明コメント:
このSQLはVBAKテーブルから販売伝票の総件数を取得するためのものです。販売伝票の件数を知ることで、システム内での取引の活動量を把握することができます。結果は伝票の総数を示す単一の数値として表示されます。

5. 伝票年間件数推移についての問い合わせ
伝票年間件数推移について確認したい
生成された説明とクエリ:
/* このSQLクエリは、販売伝票ヘッダテーブル(VBAK)から年ごとの伝票件数を取得するために作成されました。各年における伝票の総数を確認することで、年間の販売活動の推移を把握することができます。結果は年とその年の伝票件数で表示されます。 */
SELECT
EXTRACT(YEAR FROM AUDAT) AS year,
COUNT(*) AS total_invoices
FROM
VBAK
GROUP BY
EXTRACT(YEAR FROM AUDAT)
ORDER BY
year;
クエリ生成時説明コメント:
このSQLクエリは、販売伝票ヘッダテーブル(VBAK)から年ごとの伝票件数を取得するために作成されました。各年における伝票の総数を確認することで、年間の販売活動の推移を把握することができます。結果は年とその年の伝票件数で表示されます。


Benri Data NLPは結果データの簡易ビジュアライズ機能を搭載しています。(β版)
検索結果を可視化すると同時にデータの傾向に関する生成AIによるインサイトの表示も行います。

AI分析レコメンデーション
時系列データを表現するのに最適なのは折れ線グラフです。年ごとの請求書の総数の変動を視覚的に捉えることができます。 分析結果: 請求書の総数は年々増加傾向にあり、特に2017年以降は急激に増加しています。しかし、2022年のデータは他の年と比較して異常に高いため、データの正確性を確認する必要があります。
グラフの生成において、簡単なカスタマイズが可能です。以下の例では、同じクエリ結果に対して、初めは折れ線グラフで表示していたものを、自然言語入力を用いて赤い棒グラフに変更しています。

AI分析レコメンデーション
ユーザーの要求に基づき、年ごとの請求書の総数の変化を視覚的に表現するために棒グラフが最適です。棒グラフはカテゴリデータ(この場合は年)と数値データ(請求書の総数)の関係を明確に示すことができます。 分析結果: 請求書の数は時間の経過とともに増加傾向にあります。 特に2017年と2022年には請求書の数が大幅に増加しています。 これらの年度の増加は、ビジネスの成長や特定のイベントを示している可能性があります。
6. 販売伝票でmemoryを含む伝票をリストしたい
販売伝票でmemoryを含む伝票をリストしたい。
大文字も小文字も区別なく探してほしい。
/* 販売伝票明細テーブル(VBAP)から、品目テキスト(ARKTX)に'memory'という文字列を含む伝票の情報を取得するSQLを生成します。このクエリでは大文字小文字を区別せずに検索を行います。結果として、販売伝票番号(VBELN)と品目テキスト(ARKTX)をリストします。これにより、どの販売伝票が'memory'を含む品目を持っているかが確認できます。 */
SELECT VBELN, ARKTX
FROM VBAP
WHERE LOWER(ARKTX) LIKE '%memory%';
クエリ生成時説明コメント:
販売伝票明細テーブル(VBAP)から、品目テキスト(ARKTX)に'memory'という文字列を含む伝票の情報を取得するSQLを生成します。このクエリでは大文字小文字を区別せずに検索を行います。結果として、販売伝票番号(VBELN)と品目テキスト(ARKTX)をリストします。これにより、どの販売伝票が'memory'を含む品目を持っているかが確認できます。
伝票明細から大文字小文字関係なくmemoryを含む伝票を検索できた。
