如何在 Spark SQL 中格式化整数?

Posted

技术标签:

【中文标题】如何在 Spark SQL 中格式化整数?【英文标题】:How to format integer in Spark SQL? 【发布时间】:2020-08-19 05:07:45 【问题描述】:

我是 Spark 的新手。任何帮助将不胜感激。 Spark SQL 中的 sql 的 FORMAT() 是否有任何替代方案。我的核心逻辑是用 SQL 编写的,并使用spark.sql("query") 运行。我需要将 id 转换为 4 位数字。

比如如果是1,就应该转换成0001,如果是12,那就是0012。我知道在SQL中,我们可以把FORMAT("%04d", id)转换成id。但这给了我在 Spark SQL 中说FORMAT is not a function registered 的错误。在 Spark 的文档中找到 format_numberformat_string,但对我的情况没有帮助。

注意:我不想在我的 java 代码中这样做,但想在 SQL 查询本身中这样做。

【问题讨论】:

spark.apache.org/docs/2.3.0/api/sql/#format_string 【参考方案1】:

使用lpad 函数。

spark.sql("SELECT lpad('1', 4, '0')").show

+-------------+
|lpad(1, 4, 0)|
+-------------+
|         0001|
+-------------+

您可以将'1' 更改为id

【讨论】:

以上是关于如何在 Spark SQL 中格式化整数?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SQL 中将指数和系数转换为整数值

如何将 DDMMMYYYY HH:mm:ss:ssssss 格式的时间戳更改为 spark sql 中的 yyyy-MM-dd 格式 [重复]

spark sql - 如何在 spark sql 中编写动态查询

如何在 Apache Spark 上对整数列表进行排序?

如何使用 Spark SQL 作为内存数据库?

如何在 spark dataframes/spark sql 中使用模式读取 json