看起来
PowerBI
正在自动订购我的table
,我不知道为什么。所以,我有这个表(我从 Excel
文件导出)
Colonne 1
7
25
1
8
3
每当我做
New Mesure
时,用这个公式:
Mesure = FIRSTNONBLANK(Feuil1[Colonne 1];0)
它给了我号码
1
。如果我这样做 LASTNONBLANK
,它会返回数字 25
。因此,它显然会自动排序我的数据集,但每当我查看软件的“数据”选项卡时,我都会看到我的数据按照我想要的方式排序。
关于如何保持默认排序有什么想法吗?
不幸的是,这正是
FIRSTNONBLANK()
和 LASTNONBLANK()
的行为。它们根据其本机排序顺序(即数据类型)迭代列的值。因此,FIRSTNONBLANK
将返回最小的数字1
和LASTNONBLANK
最大的数字25
。一般来说,在使用 DAX 时,您不能对表或列中值的排序顺序做出假设。
因此,我的建议是你可以显式地编写逻辑来找到目标值。假设表格是根据日期排序的,您可以找到最早/最新日期的键(根据您的用例),然后使用该键查找值。
Target =
VAR TargetKey =
CALCULATE(
VALUES(Table1[Key]),
FILTER(
Table1,
Table1[Date] = MIN(Table1[Date]) // or MAX(Table1[Date])
)
)
RETURN
LOOKUPVALUE(Table1[Colonne 1], Table1[Key], TargetKey)
我遇到了完全相同的问题:我需要选择一个与不同表中的特定条件匹配的特定值,并且排序顺序是日期,而不是值的顺序。 DAX 提出的另一个挑战:您不能在表变量中使用列,因此
RANKX
无济于事。
解决方案是创建一个
VAR _minxDate
为我提供了表格的确切日期,然后使用 FIRSTNONBLANK
获取所需的表格。
所以完整的代码如下所示:
Previous value =
_var minDate = MINX (FILTER (TargetTable, <lots of conditions>), TargetTable[Date])
// Now that I have the date, I can use the FIRSTNONBLANK to read the value
VAR _PrevValue = CALCULATE(FIRSTNONBLANK (TargetTable[TargetValue], 0),
FILTER (TargetTable, <long list of conditions as before> && TargetTable[Date] = _minxDate
Return _PrevValue