我的 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 相同。但随后对齐就到处都是了。
您能帮忙解决这个问题吗?提前非常感谢。
如果你想要这个结果:
+-------+------------------+---------------+
|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"))