暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

当Doris学会了"说方言": 让你的SQL自由转换

一臻数据 2024-12-25
338

更多趣文请关注一臻数据

数据迁移好比搬家,每个数据工程师都曾面临这样的烦恼:一大堆SQL语句需要改写,就像要把所有家具都重新组装一遍。 

不同系统的SQL语法就像不同的方言,虽然都在说SQL这门语言,却各有各的"口音"和习惯。"要是有个'翻译官'就好了!" - 这大概是每个经历过系统迁移的工程师的心声。 

今天要给大家介绍的就是这样一个神奇的"翻译官" - Apache Doris的SQL方言转换功能。它不仅能听懂Presto、Trino、Hive、ClickHouse、Oracle 等十几种SQL方言,还能帮你自动完成转换!

Doris SQL 方言兼容: 让数据迁移如丝般顺滑

"面对系统迁移,SQL改写就像在玩俄罗斯方块,一不小心就掉坑里了。"

这句话道出了许多数据工程师的心声。随着数据规模的增长和业务的发展,企业往往需要将数据从一个系统迁移到另一个系统。这个过程中,最头疼的莫过于 SQL 语法的兼容性问题。

每个数据系统都有其独特的 SQL 方言,就像每个地方都有自己的方言一样。虽然都是在说 SQL,却各有各的"口音"。当你需要将数据从 Presto/Trino、ClickHouse 或者 Hive 迁移到 Doris 时,成百上千的 SQL 语句都需要重写,这无疑是一项巨大的工程。

Apache Doris 深知这一痛点。在 2.1 版本中,Doris 推出了 SQL 方言兼容功能,支持包括 Presto、Trino、Hive、ClickHouse、Oracle 等在内的十几种主流 SQL 方言。用户只需设置一个简单的会话变量,就能让 Doris 直接理解和执行其他系统的 SQL 语法。

兼容性测试显示,在某些用户的实际业务场景中,Doris 对 Presto SQL 的兼容度高达 99.6%,对 ClickHouse 方言的兼容度达到 98%。这意味着绝大多数 SQL 语句无需修改就能直接在 Doris 中运行。

对数据工程师而言,这宛如手持一个万能翻译器,不管是哪种 SQL "方言",都能自动转换成 Doris 能理解的语言。系统迁移不再需要手动改写大量 SQL,大大降低了迁移成本和风险。

从"方言困境"到"语言大师"

张工是一位经验丰富的数据工程师,最近他接到了一个棘手的任务 - 将公司的数据分析平台从ClickHouse迁移到Apache Doris。面对成百上千的SQL语句,他不禁揉了揉太阳穴。

"要是能有个工具,直接把ClickHouse的SQL转成Doris的就好了。" 张工喃喃自语。就在这时,他发现了Doris的SQL方言兼容功能。

让我们跟随张工的脚步,看看他是如何化解这个难题的:

首先,下载最新版本的 SQL 方言转换工具:https://www.selectdb.com/download/tools

在任意 FE 节点,通过以下命令启动服务:

# 配置服务端口
vim apiserver/conf/config.conf
# 启动 SQL Converter for Apache Doris 转换服务
sh apiserver/bin/start.sh
# 如需前端界面, 可在 webserver 中配置相应的端口并启动, 不需要前端则可以忽略以下操作
vim webserver/conf/config.conf
# 启动前端界面
sh webserver/bin/start.sh

启动 Doris 集群(2.1 或更高版本)并在服务启动后,在Doris中设置SQL转换服务地址:

set global sql_converter_service_url = "http://127.0.0.1:5001/api/v1/convert"

接着,只需一行命令切换SQL方言:

set sql_dialect=clickhouse;

就这么简单,张工发现原本需要手动改写的SQL语句,现在可以直接在Doris中执行了:

mysql> select  toString(start_time) as col1,
             arrayCompact(arr_int) as col2,
             arrayFilter(x -> x like '%World%',arr_str)as col3,
             toDate(valueas col4,
             toYear(start_time)as col5,
             addMonths(start_time, 1)as col6,
             extractAll(value'-.')as col7,
             JSONExtractString('{"id": "33"}' , 'id')as col8,
             arrayElement(arr_int, 1as col9,
             date_trunc('day',start_time) as col10
          FROM test_sqlconvert
          where date_trunc('day',start_time)= '2024-05-20 00:00:00'     
     order by id;
+---------------------+-----------+-----------+------------+------+---------------------+-------------+------+------+---------------------+
| col1                | col2      | col3      | col4       | col5 | col6                | col7        | col8 | col9 | col10               |
+---------------------+-----------+-----------+------------+------+---------------------+-------------+------+------+---------------------+
| 2024-05-20 13:14:52 | [1, 2, 3] | ["World"] | 2024-01-14 | 2024 | 2024-06-20 13:14:52 | ['-0','-1'] | "33" |    1 | 2024-05-20 00:00:00 |
+---------------------+-----------+-----------+------------+------+---------------------+-------------+------+------+---------------------+
1 row in set (0.02 sec)

"这简直太神奇了!" 张工惊喜地发现,这个看似复杂的ClickHouse SQL语句被完美地执行了。

不仅如此,他还发现Doris还提供了可视化界面,支持文本输入和文件上传两种模式。对于单个 SQL,用户可以直接在 Web 界面中进行文本输入。如若存量 SQL 规模庞大,可以通过上传文件进行多个 SQL 的一键批量转换:

通过可视化界面,张工可以批量上传SQL文件,一键完成转换。"这不就相当于有了一个全能翻译官,不管是ClickHouse还是其它的SQL,都能无缝切换。"张工感叹道。

更让他惊喜的是,这个"翻译官"的准确率相当高。在实际测试中,对Presto SQL的兼容度达到99.6%,对ClickHouse的兼容度也有98%。这意味着绝大多数SQL都能直接使用,极大地提升了迁移效率。

数据迁移项目的压力骤减,张工终于能睡个好觉了。不过他还有个小担心:"如果遇到不支持的语法怎么办?"

这时他发现,Doris的开发团队非常重视用户反馈。通过社群、Ask论坛、GitHub Issues或邮件组,用户可以随时反馈问题,推动SQL方言转换功能的持续优化和完善。

这种开放和重视用户反馈的态度,让张工对未来充满信心。"下次再遇到数据迁移项目,我就知道该用什么'神器'了!"

下期,我们将一起探讨其它更有趣有用有价值的内容,敬请期待!



一臻数据致力于大数据AI时代的前沿内容分享,会持续分享更多有趣有用有态度的知识。同时也欢迎大家投稿,共建共进,帮助圈友们冲破认知壁垒,实现自我提升!

另外,整理了份《一臻数据知识库》,其中包含 Apache Doris  Data+AI 的学习资料、学习课程、白皮书、研究报告、行业标准  实践指南 等内容,会持续更新,欢迎关注公众号,免费领取

资料获取 🔗 欢迎扫描下方二维码图片 备注【Doris】免费领取❗️



往期推荐

走进开源,拥抱开源

大数据平台开发规范示例

大数据仓库开发规范示例

大数据质量管制规范示例

Flink CDC 1.0至3.0回忆录

【Apache Doris】Manager 极致丝滑地运维管理

【Apache Doris】如何一键实现MySQL万表整库同步?

【Apache Doris】如何实现高并发点查?(原理+实践全析)

为什么Apache Doris适合做大数据的复杂计算,MySQL不适合?

如何正确地使用ChatGPT(角色扮演+提示工程)

超强满血不收费的AI绘图教程来了(在线Stable Diffusion一键即用)

 

点击下方蓝字关注一臻数据

文章转载自一臻数据,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论