自定义格式并对齐 Databricks SQL 结果

问题描述 投票:0回答:1

我的 Azure Databricks SQL 查询输出按月汇总的产品总数和总价格。对于不同的产品,价值从几百到数百万不等。我希望使用 1000 分隔符格式化计数和总和并右对齐。计数只需包含数字,总和需要保留 2 位小数。

当我使用

format_number(count(distinct product), 0)
format_number(sum(price), 2)
时,结果左对齐。我认为这是因为格式将数字转换为文本,因此左对齐。我也尝试过
lpad((format_number(count(distinct product), 0)), 50, ' ')
和 sum 相同。但随后对齐就到处都是了。

您能帮忙解决这个问题吗?提前非常感谢。

sql azure-databricks databricks-sql
1个回答
0
投票

如果你想要这个结果:

+-------+------------------+---------------+
|month  |formatted_products|formatted_price|
+-------+------------------+---------------+
|2024-02|         3        |      81,700.50|
|2024-01|         2        |      25,400.50|
|2024-03|         2        |       3,550.00|
+-------+------------------+---------------+

你必须使用这种格式:

formatted_df = (aggregated_df
                .withColumn("formatted_products", lpad(format_number(col("total_products"), 0), 10, ' '))
                .withColumn("formatted_price", lpad(format_number(col("total_price"), 2), 15, ' '))
                .select("month", "formatted_products", "formatted_price"))
© www.soinside.com 2019 - 2024. All rights reserved.