为什么我会收到“按另一列排序”错误 Power BI

问题描述 投票:0回答:2

我不明白为什么会出现此错误?

enter image description here

我确信列

MM-DD Sort
在表中具有唯一值

这是我在 Power BI 中使用的日历表查询:

 DECLARE @MinDate DATE = '2017-07-01',
        @MaxDate DATE = CAST(GETDATE() + 7  as DATE)  
;WITH cte_Calendar AS (
SELECT  TOP (DATEDIFF(DAY, @MinDate, @MaxDate) + 1)
        Date = DATEADD(DAY, ROW_NUMBER() OVER(ORDER BY a.object_id) - 1, @MinDate)
FROM    sys.all_objects a
        CROSS JOIN sys.all_objects b
) SELECT Date,
         MonthNum = MONTH(Date)
         ,Year = Year(Date)
         ,Month = FORMAT(Date, 'MMM')
         ,'MM-DD' = FORMAT(Date, 'MMM') + '-'+ FORMAT(Date, 'dd')
         ,'MM-DD Sort' = FORMAT(Date, 'yyMMdd')

FROM cte_Calendar 

那么这是 Power BI 中的某种错误吗?

powerbi dax powerbi-desktop
2个回答
1
投票

MM-DD Sort
中的值是唯一的,但
MM-DD
中的值不是唯一的。

例如,如果您的日期表跨越 2019 年和 2020 年,那么您将在多行中显示

Jun-30
,并在排序列中显示
190630
200630
。因此 Power BI 不知道使用哪个索引来进行排序。

您可以使用建议的日期排序列(其中确实包括年份),但由于

MM-DD
中没有年份,因此您不能将年份包含在
MM-DD Sort
中并期望它能够工作。


0
投票

特殊字符也会影响这一点。 我有一个 dim_Hour 表,其中包含 [Hour_Number]、[Military_Hour_Notation]、[AM_PM_Hour_Notation] 和 [ProductionDaySort] 列。 该表有24条记录。 [Military_Hour_Notation] 类似于“14:00”,[AM_PM_Hour_Notation] 为“2 PM”。 工厂生产日为08:00至次日07:59。 我设置了 [ProductionDay Sort] 列,以便能够相应地显示生产图表(使用事实表中的数据)。

我可以要求 PowerBI 在 [ProductionDaySort] 上“按列排序”[AM_PM_Hour_Notation],但当我尝试 [Military_Hour_Notation] 时,我收到错误“我们无法按 'ProductionDaySort' 对 'Military_Hour_Notation' 列进行排序。可以' “Military_Hour_Notation”中的相同值不能超过“ProductionDaySort”中的值,请选择不同的列进行排序或更新“ProductionDaySort”中的数据。

这绝对是一个错误。

(我可以发誓这在一周前就有效了。不知道在此期间 PowerBI 是否有更新)

dim_Hour 中数据的屏幕截图

© www.soinside.com 2019 - 2024. All rights reserved.