英文:
DAX to Test for Whole Number
问题
我有一个如下所示的Actuals列:
ID | Airport
------------
A | 98.4
B | 98.0
C | 95.3
我试图将上面的数字格式化为前端报告中的百分比。我已经在一个switch语句中编写了这个逻辑 - 为了方便,我将逻辑写成一个IF布尔值。
example_measure =
VAR Nums = SELECTEDVALUES(Table[Actuals])
VAR FormatNums = IF(DIVIDE(ROUND(nums,1), nums) = 1,
format(nums,"0%"),format(nums,"0.0%"))
-
RETURN
FormatNums
无论我做什么,这总是返回一个浮点值为1f
的数字。
所以在我的原始数据中的98.0,我期望格式返回"98%"
而不是"98.0%"
。
这些度量用于单独的卡片,并且经过筛选,所以它们只能显示一个值或空白,这意味着它们只会单独显示一个值。
我曾尝试使用if(nums = int(nums))
,这应该对98.0
求值为真,但我总是得到假。
英文:
I have a Actuals column like so:
ID | Airport
------------
A | 98.4
B | 98.0
C | 95.3
I'm attempting to format the numbers above into percentages for a front-end report. I have this written in a switch statement - for ease I'll just write the logic as an IF boolean.
example_measure =
VAR Nums = SELECTEDVALUES(Table[Actuals])
VAR FormatNums = IF(DIVIDE(ROUND(nums,1), nums) = 1,
format(nums,"0%"),format(nums,"0.0%")
-
RETURN
FormatNums
no matter what I do this always returns a number with a floating point value of 1f
so in my raw data of 98.0 I'm expecting the format to return "98%"
rather than "98.0%"
the measures are used on individual cards, and are filtered so they can only ever show one value or blank, meaning they will only ever display one value on their own.
I've toyed with using if(nums = int(nums)
which should evaluate to true for 98.0
but it I always get false.
答案1
得分: 2
要将一列/度量转换为百分比,您只需将该列除以100,然后将其格式化为百分比。请按照以下步骤操作:
- 创建一个新的列/度量:
Perc_value = Table[Actuals]/100
- 然后进入建模选项卡,选择创建的列/度量,并将其格式化为百分比,将小数位数限制为0
这应该会得到您想要的视图。希望这有所帮助。
编辑:
您可以使用以下公式来实现所需的结果:
Column4 = IF('Table'[Column2]-ROUND('Table'[Column2],0)=0,FORMAT('Table'[Column2]/100,"0%"),FORMAT('Table'[Column2]/100,"0.0%"))
将Column2替换为您的字段,然后应该可以正常使用。
英文:
To convert a column/measure into percentage, you can simply divide the column by 100 and then format it as a percentage. Use the following steps:
- Create a new column/measure:
Perc_value = Table[Actuals]/100
- Then go into the modelling tab, select the created column/measure and format it as a % and limit the number of decimal places to 0
This should give the view you are looking for. Hope this helps.
Edit:
You can use the below formula to achieve the desired result:
Column4 = IF('Table'[Column2]-ROUND('Table'[Column2],0)=0,FORMAT('Table'[Column2]/100,"0%"),FORMAT('Table'[Column2]/100,"0.0%"))
Replace Column2 withyour field and you should be good to go.
答案2
得分: 2
有一个更简单的方法 - 只需使用内置的格式化代码:
Formatted Actuals =
VAR x = SELECTEDVALUE(Data[Actuals])
RETURN
FORMAT(x, "General Number") & "%"
结果:
内置样式 "General Number" 正确处理您的情况,您只需将百分比符号添加到格式化的字符串中。不需要测试是否为整数。
英文:
There is a simpler way - just use built-in formatting codes:
Formatted Actuals =
VAR x = SELECTEDVALUE(Data[Actuals])
RETURN
FORMAT(x, "General Number") & "%"
Result:
Built-in style "General Number" handles your situation correctly, you just need to add % symbol to the formatted string. No need to test for whole numbers.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论