自然语言生成智能图表NL2Chart

使用NL2SQL得到SQL语句后,通常希望得到这个SQL查询出的结果,同时能够展示一些更直观的结果,比如柱状图、饼图、折线图等。PolarDBNL2Chart方案能够将SQL语句的查询结果转化为动态报表,帮助您更高效地理解和分析数据。

方案概述

NL2Chart其核心流程包含两大阶段:首先基于NL2SQL技术将自然语言转义为SQL查询语句,随后使用解析的SQL语句生成可视化分析报表。

  1. 假设您在NL2SQL中的语句如下:

    /*polar4ai*/SELECT * FROM PREDICT (MODEL _polar4ai_nl2sql, select '商户类型统计') WITH (basic_index_name='schema_index',pattern_index_name='pattern_index');

    生成的SQL语句如下:

    SELECT merchtype AS 商户类型,COUNT(*) AS 商品数量 FROM hkrt_merchant_info GROUP BY merchtype;
  2. 使用NL2Chart功能:

    语法说明

    /*polar4ai*/SELECT * FROM PREDICT (MODEL _polar4ai_nl2chart, <SQL语句>) WITH (usr_query = <usr_query>, result_type = <result_type>);

    参数说明

    参数名称

    参数说明

    示例值

    usr_query

    用户输入的问题描述,用于明确统计图表的生成需求。

    '2023年各季度销售额统计'

    result_type

    指定返回结果的类型,当前仅支持 'IMAGE'

    'IMAGE'

    SQL语句

    由 NL2SQL 模块生成的 SQL 查询语句,用于获取数据。

    SELECT quarter, sales FROM sales_data WHERE year = 2023

    示例:SQL语句的查询结果转化为图表。

    /*polar4ai*/SELECT * FROM PREDICT (MODEL _polar4ai_nl2chart, SELECT merchtype AS 商户类型, COUNT(*) AS 商户数量 FROM hkrt_merchant_info GROUP BY merchtype) WITH (usr_query = '商户类型统计', result_type='IMAGE');

    返回结果如下:

    http://db4ai-xxx-.aliyuncs.com/pc-xxx/OSSAccessKeyId=xxx&Expires=1716130199&Signature=KvPFzxxx
    说明

    返回的链接为PNG图片地址。该地址不存在权限限制,仅存在时效限制,有效时间为90分钟,过时将失效。具体失效时间请查看地址中的Expires字段。

image.png

图表类型选择与强制选择

模型会基于对用户问题和数据的理解选择合适的图表,推荐选择用户问题引导模型画图。

以下是问题类型与图表类型对应参考表:

问题类型

图表类型

用户问题示例

说明

数量统计

柱状图

"请统计各城市销售额"

展示不同类别之间的数值对比,如数量、总量、频次等。

趋势变化

折线图

"请展示过去一年的用户增长趋势"

展示数据随时间或有序类别变化的趋势,强调连续性。

占比分布

饼状图

"请展示各产品线的销售占比"

适用于展示整体中各部分的比例关系,需数据为分类且总和明确。

通过修改usr_query参数强制指定图表类型,在usr_query参数末尾加上补充命令即可:

-- 将输出的sql输入 nl2chart 画折线图
/*polar4ai*/SELECT * FROM PREDICT (MODEL _polar4ai_nl2chart,
SELECT merchtype AS 商户类型, COUNT(*) AS 商户数量 FROM hkrt_merchant_info GROUP BY merchtype
) WITH (usr_query = '商户类型统计,画折线图', result_type='IMAGE');

image.png

-- 将输出的sql输入 nl2chart 画饼状图
/*polar4ai*/SELECT * FROM PREDICT (MODEL _polar4ai_nl2chart,
SELECT merchtype AS 商户类型, COUNT(*) AS 商户数量 FROM hkrt_merchant_info GROUP BY merchtype
) WITH (usr_query = '商户类型统计,画饼状图', result_type='IMAGE');

image.png

使用建议

通过联合使用NL2ChartNL2SQL功能,可以实现从自然语言到图表的自动化生成。

说明

数据与图表类型匹配,确保数据与图表类型兼容,例如:饼图需要占比数据。折线图需要有序时间序列数据。

  1. 图表类型自动匹配:系统优先根据问题中的关键词(如“数量”“趋势”“占比”)自动推荐合适的图表类型。

  2. 手动指定图表类型:若默认推荐不满足需求,可通过修改usr_query明确指定图表类型。

通过以上流程,您可以高效生成符合需求的统计图表。