如何将Azure流分析查询中的Scored Probabilities转换为百分比?
解决Azure流分析中将小数转换为百分比格式的问题
我来帮你搞定这个转换问题!你之前的两种写法都有小问题,导致Azure流分析报错,下面给你拆解错误原因和正确的实现方式:
先说说你之前写法的问题
- 第二种写法
CAST (result.[Scored Probabilities*100] AS FLOAT )是语法错误:你不能把运算逻辑直接写到字段名的方括号里,[Scored Probabilities*100]会被当成一个不存在的字段名,自然会报错。 - 第一种写法
CAST (result.[Scored Probabilities] AS FLOAT ) *100本身逻辑没问题,但如果报错,大概率是因为乘法后的结果类型不符合流分析输出的要求,或者你需要明确指定保留一位小数来得到45.0这种格式。
正确的实现方式
要得到45.0这样的百分比格式,你需要先将字段转换为数值类型,乘以100后,再通过类型转换或ROUND函数来确保保留一位小数。这里提供两种可靠的写法:
写法1:使用DECIMAL类型控制精度
这种方式可以精准控制小数位数,确保输出是45.0格式:
CAST(CAST(result.[Scored Probabilities] AS FLOAT) * 100 AS DECIMAL(5, 1)) AS 'probabilities of rain'
DECIMAL(5,1)表示总共有5位数字,其中1位是小数,刚好满足你的需求。
写法2:使用ROUND函数保留一位小数
如果你更倾向于用ROUND来处理小数位数,也可以这样写:
ROUND(CAST(result.[Scored Probabilities] AS FLOAT) * 100, 1) AS 'probabilities of rain'
ROUND(...,1)会将结果四舍五入到小数点后1位,比如0.45会变成45.0,0.456会变成45.6。
这两种写法都能在Azure流分析中正常运行,并且输出符合你要求的百分比格式,直接对接Power BI也不会有问题。
内容的提问来源于stack exchange,提问作者Kevin Sullivan
相关产品推荐
相关产品推荐

