生成式 AI 和大型语言模型 (LLM) 是近期的热门话题。我们中的许多人都会使用 ChatGPT 等服务来提高日常工作效率。这些技术的出现对数据分析师、工程师或数据库管理员的工作产生了同样的影响。虽然 LLM 编写 SQL 的能力早已为人所知,但 ChatGPT 等服务可能不够精确,并且容易生成不太正确的查询,除非提供上下文。通过将 ChatGPT API 直接集成到 Cloud 的 SQL 控制台中,我们可以将表及其各自的模式作为任何查询的上下文提供,从而提高响应的准确性和实用性。
各种 SQL 经验水平的用户都可以从这项功能中受益。除了降低非技术用户编写针对 ClickHouse 的查询的门槛外,经验丰富的 SQL 专家还可以提高工作效率,并利用查询助手为复杂问题或他们不太记得的语法提供基础 :)
作为一个示例,请考虑我们常用的 英国房价支付数据集 中的以下表架构
CREATE TABLE default.uk_price_paid (
`price` UInt32,
`date` Date,
`postcode1` LowCardinality(String),
`postcode2` LowCardinality(String),
`type` Enum8('other' = 0, 'terraced' = 1, 'semi-detached' = 2, 'detached' = 3, 'flat' = 4),
`is_new` UInt8,
`duration` Enum8('unknown' = 0, 'freehold' = 1, 'leasehold' = 2),
`addr1` String,
`addr2` String,
`street` LowCardinality(String),
`locality` LowCardinality(String),
`town` LowCardinality(String),
`district` LowCardinality(String),
`county` LowCardinality(String)
) ENGINE = MergeTree()
ORDER BY (postcode1, postcode2, addr1, addr2)
假设我们想要对此表运行年度交易量和价值分析。我们可以简单地输入如下提示
按年份显示所有 uk_price_paid 交易的总价和总数
正如我们所见,LLM 返回了一个有效的查询
虽然查询建议可能并不总是完美的,但它们仍然可以为用户提供迭代的基础。除了提供仅从描述编写查询的能力外,该服务还提供了一种快速纠正查询的方法 - 根据 ClickHouse 提供的错误上下文修复语法。
考虑以下情况
SELECT
startOfYear(date) as year,
countIf(price < 1000000) as small_transactions,
countIf(price >= 1000000) as large_transactions
FROM uk_price_paid
WHERE
twon = 'LONDON'
GROUP BY
year
ORDER BY
year ASC
此查询存在几个不同的问题 - startOfYear
不是有效的 ClickHouse 函数,并且 twon
是一个错别字(应为 town
)。运行此查询将抛出错误
根据错误消息,我们可以单击“修复查询”按钮,请求 LLM 帮助调试此查询
从差异中,我们可以看到 LLM 已正确识别并修复了此查询中的两个问题。只需单击“应用”即可提交更改并重新运行查询
立即在 ClickHouse Cloud 中试用我们新的 GenAI 驱动的查询建议功能。立即开始使用,并获得 300 美元信用额度。在 30 天试用期结束时,继续使用按需付费计划,或联系我们以了解有关我们基于用量的折扣的更多信息。访问我们的定价页面了解详情。