我一直在研究Power BI一段时间,当我浏览它的帮助主题时,我常常感到困惑.它们通常是指用作DAX函数或Power Query的函数和公式,但我无法区分这两者.请指导我.
我想基于维度值(或者实际上,基于度量值的数量级)动态地更改DAX度量的数字格式.
我明白我可以使用SWITCH和FORMAT,由卡斯帕·德容格在这里证明:https://www.kasperonbi.com/dynamic-format-using-dax/
这是我正在创建的度量类型的示例:
My Measure:=IF (
HASONEVALUE ( dimMeasureType[Measure Type] ),
SWITCH ( VALUES ( dimMeasureType[Measure Type] ),
"Total Cost", FORMAT ( [Total Cost], "#,##0, k" ),
"Cost Per Unit", FORMAT ( [Cost Per Unit], "#,##0.00" ),
"Cost % Sales", FORMAT ( [Cost % Sales], "0.00%" ),
BLANK()
),
BLANK()
)
Run Code Online (Sandbox Code Playgroud)
但是这种技术会返回文本度量.我需要能够绘制我的度量图表,所以我不想将它们转换为文本.是否有另一种技术可以动态更改度量数字格式,而无需转换为字符串?
如果它有所作为,我在SQL Server 2016 BI上使用SSAS-Tabular.
CALCULATE如果我们在有和没有FILTER功能的情况下使用它,那么函数结果有什么不同.假设我们有这两个措施:
Measure1 = CALCULATE([X], 'FactTable'[Color]="Red")
Measure2 = CALCULATE([X], FILTER('FactTable', 'FactTable'[Color]="Red")
Run Code Online (Sandbox Code Playgroud)
更新.额外的赏金问题:
有没有办法通过使用其他函数来修改Measure2,例如ALL,或者ALLSELECTED,它会返回与Measure1完全相同的结果?
赏金后更新
我决定给予赏金以获得与我接受的答案不同的答案.
我有一张桌子,每个人都有一年中每一天的记录。我用这个函数实现了基于每日余额列的运行总计
CALCULATE(
SUM(Leave[Daily Balance]),
FILTER(
ALLEXCEPT(Leave, Leave[Employee Id]),
Leave[Date] <= EARLIER(Leave[Date])
))
Run Code Online (Sandbox Code Playgroud)
但如果 Type = Working 并且 Daily Balance 的运行总数小于零并且前一行的 Type 不等于 Working,我需要运行总数从 1 重新开始。下面是 Excel 的屏幕截图。所需的功能列是我需要的。
众所周知,TODAY() 函数在发布到 Power BI 服务时返回 UTC 时间。我们的要求是返回本地 (EST) 日期。作为解决方案,我们创建了一个自定义度量,它在 NOW() 中为 EST 添加 UTC 偏移小时数并返回结果日期。
但是,这不会处理夏令时的变化,因为这些时间段内的偏移量会发生变化。
有什么可能的方法来处理这个问题?
在Excel 2013中使用PowerQuery为PowerPivot模型构建Calendar表时,我使用其Date.QuarterOfYear函数来获取季度的数量.
在SSAS表格中构建相同的东西需要一些解决方法.没有等效的DAX函数可以从DATE获得该季度的数量.奇怪的是,DAX有YEAR()和MONTH(),但没有QUARTER().
嵌套IF或SWITCH语句真的是DAX获得季度数的唯一方法吗?
缺少这么简单有用的功能的原因是什么?我是否忽视了这一决定的最高智慧?
我正在制作一份报告,我必须在其中显示不同项目的接受率。每个项目都存在一个三个字母的字符串,所有项目都集中在一个与大字符串相同的列中,用空格分隔。
我现在正在尝试创建一个度量,以便在此列中搜索特定项目并计算找到该字符串的条目数。我现在可以通过创建一个计算列来查找包含该项目的条目然后对该列求和,这是可能的,但是,如果这可以在度量中实现,那就太好了。
例如,一列可能包含
7AX 4U6 4U7
5AZ 6AT 4U6
609 606 543
然后,我希望能够通过度量来计算包含 4U6 的条目数...
在此先感谢您的帮助
我不知道这是否可能,但我希望能够创建一个计算列,其中每一行依赖于它上面的行.
一个典型的例子是Fibonacci序列,其中序列由递归关系F(n) = F(n-1) + F(n-2)和种子定义F(1) = F(2) = 1.
在表格中,
Index Fibonacci
----------------
1 1
2 1
3 2
4 3
5 5
6 8
7 13
8 21
9 34
10 55
... ...
Run Code Online (Sandbox Code Playgroud)
我希望能够将Fibonacci列构建为计算列.
现在,我知道Fibonacci序列有一个很好的封闭形式,我可以定义
Fibonacci = (((1 + SQRT(5))/2)^[Index] - ((1 - SQRT(5))/2)^[Index])/SQRT(5)
Run Code Online (Sandbox Code Playgroud)
Fibonacci =
SUMX (
ADDCOLUMNS (
SELECTCOLUMNS (
GENERATESERIES ( 0, FLOOR ( ( [Index] - 1 ) / 2, …Run Code Online (Sandbox Code Playgroud) 我是DAX的喵喵.我如何连接三个不同的列,将First_Name,Middle_Name和Last_Name连接到一个列,其间使用DAX中的CONCATENATE函数.目前我只能连接两列.
= CONCATENATE(FIRST_NAME),CONCATENATE("",[LAST_NAME]))
如果有任何其他功能,请告诉我也.我的目标是将第一个名称,第二个名称和第三个名称连接到SSAS表格模型中的单个列中
请帮我.提前致谢