在格式化的“会计期间”列中重新排序月份和年份

时间:2019-05-30 16:18:09

标签: powerbi dax

我正在尝试将会计期间列从字母顺序重新排列为时间顺序。也就是说,我具有此列,该列将值显示为月年(在查询编辑器中显示所有不同的值):  Period_Name Column

我想按时间顺序排列此列,例如:JAN-18,FEB-18,MAR-18,APR-18等,以便使用它来绘制时间序列。

现在,如果我尝试将“查询编辑器”中列的数据类型更改为“日期”,它会认为该年实际上是一天,然后假定该年为当前年(即2019年);也就是说,APR-18变为2019年4月18日,而不是应有的日期,即2018年4月,没有一天(这是一个会计期栏)。带有FORMAT函数(https://docs.microsoft.com/en-us/dax/custom-date-and-time-formats-for-the-format-function)的自定义日期和时间格式似乎无法识别该列采用的月份格式,而当我尝试在其中使用时将其吐出相同的值一个新的计算列。

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:2)

您不应更改Month-Year的数据类型,而应按另一列对month-year列进行排序,这可能是另一种数据类型: 进入表格/数据视图,单击要排序的列,单击“按列排序”,然后选择代理排序列

您还应该开始使用相关的日历表来正确管理这些类型的排序。

例如,在日历表中有两列。包含您要使用的诸如“ Feb-2019”之类的数据的Month-year,然后另一个名为YearMonth的列,其包含诸如201902的值并且类型为Int。

然后只需根据YearMonth列对Month-Year列进行排序,即可对其进行正确排序。

答案 1 :(得分:0)

由于您的字段是TEXT,因此将按字母顺序排序。您可以通过执行以下操作来创建“按列排序”以对数据进行排序:

Sort by Column := 
VAR YearNumber =
    RIGHT ( 'Table'[Column], 2 ) + 2000
VAR CurrentMonthName =
    LEFT ( 'Table'[Column], 3 )
RETURN YearNumber &
    SWITCH (
    CurrentMonthName,
    "JAN", "01",
    "FEB", "02",
    "MAR", "03",
    "APR", "04",
    "MAY", "05",
    "JUN", "06",
    "JUL", "07",
    "AUG", "08",
    "SEP", "09",
    "OCT", "10",
    "NOV", "11",
    "DEC", "12"
)  

这将为您提供一个索引,根据该索引对数据进行排序。将其创建为计算所得的列,将类型从文本转换为整数,然后按此新列对原始列进行排序,那么您应该是黄金的。