跳转到正文

Spark SQL 格式化工具

按照 Spark 规则格式化 Apache Spark SQL 和 Databricks 查询,支持反引号标识符、带反斜杠转义的字符串、原始 r'' 字符串和 ${var} 替换。CLUSTER BY、DISTRIBUTE BY 和 SORT BY 会作为子句保留;LATERAL VIEW 和 LEFT SEMI 或 ANTI JOIN 会另起一行;SELECT * EXCEPT 则保持在同一行。未闭合的字符串和括号会报告行和列,方便数据工程师检查。

重置

常见问题

支持识别哪些 Spark SQL 语法?

可识别反引号标识符、带反斜杠转义的单引号和双引号字符串、原始 r'' 字符串,以及 X'' 二进制字面量。${var} 替换、map['key'] 和 array[0] 下标,以及 :: 类型转换都会保持完整。

支持哪些 Spark 专用子句?

CLUSTER BY、DISTRIBUTE BY 和 SORT BY 会像 ORDER BY 一样各自另起一行。LATERAL VIEW、LATERAL VIEW OUTER、LEFT SEMI JOIN 和 LEFT ANTI JOIN 会像联接一样另起一行。

SELECT * EXCEPT 会如何处理?

紧跟星号的 EXCEPT 会保持在同一行。这样,SELECT * EXCEPT (col) 就不会与 EXCEPT 集合运算符混淆。

${var} 占位符会保留吗?

会。${env} 或 ${hivevar:date} 这样的替换会原样保留,包括其中的冒号。

支持 MERGE INTO 吗?

支持。Delta Lake MERGE INTO 语句中的 WHEN MATCHED 和 WHEN NOT MATCHED 分支会另起一行。

可以粘贴 PySpark 字符串中的 SQL 吗?

是的,直接粘贴 SQL 文本本身,不要带外层的 Python 引号。结果可以粘贴回 spark.sql() 或笔记本单元格。

它会更改关键字的大小写吗?

不会。关键字和名称会保留你输入时的大小写。只有空白字符和换行会改变。

会检测哪些错误?

未闭合的字符串、反引号标识符、下标和块注释,以及不平衡的括号;每项都会标出行和列。不会在集群上运行任何内容。

输入内容可以有多大?

每次请求最多 1 MB,每条语句最多 128 KB。包含许多语句的笔记本导出内容会逐条格式化。

可以选择缩进方式吗?我的 SQL 会保存吗?

可使用 2 个或 4 个空格,也可使用制表符。SQL 只会在内存中格式化,绝不会保存。

关于 OneClick Pro

OneClick Pro 是一个免费的工具集合,包含超过 150 种网络工具,助你处理日常工作:转换图像和单位、格式化和验证代码、检查域名和 SEO,以及处理文本、日期和数字。所有工具均可免注册、免订阅使用;你输入的内容仅用于计算结果,绝不会被存储。你可以将它用作处理临时任务的快捷工具箱,也可以收藏每天都会用到的工具。