创建一个新列并将其显示为数字值

时间:2018-09-25 18:59:23

标签: powerbi dax powerquery powerbi-desktop

我有1个文件,该文件包含以下列:文档日期处置日期

在Power BI Desktop中,我想创建另一个名为“ 持续时间”的列,该列可以通过获取处置日期-文档日期来计算em>,并且我希望新列以数字值显示,因为处置日期文档日期都在序列号中(例如: 39448)或 date (例如:09/25/2018)格式。

是否有代码或执行此操作的方法?谢谢!

2 个答案:

答案 0 :(得分:0)

我可能在这里没有重点,但是如果您有这样的数据集:

Document    Disposition
25.09.2018  22.09.2018
24.09.2018  21.09.2018
23.09.2018  20.09.2018
22.09.2018  19.09.2018
21.09.2018  18.09.2018
20.09.2018  17.09.2018
19.09.2018  16.09.2018
18.09.2018  14.09.2018
17.09.2018  13.09.2018
16.09.2018  12.09.2018
15.09.2018  11.09.2018
14.09.2018  10.09.2018
13.09.2018  09.09.2018
12.09.2018  08.09.2018
11.09.2018  07.09.2018
10.09.2018  06.09.2018
09.09.2018  05.09.2018
08.09.2018  04.09.2018

然后,您可以使用Get Data加载它们,转到Edit Queries,选择Add Column,然后像这样进行设置:

enter image description here

然后,您可以单击列顶部的ABC / 123图标enter image description here并将数据类型更改为Whole number,您将获得以下信息:

enter image description here

请问这是否不是您想要的。

答案 1 :(得分:0)

由于数据类型存在一些差异,因此首先为文档和处置创建两个新的日期列。我基本上只是在检查转换后,是否在date字段中有一个“ /”表示它是一种日期类型,否则,我假设它已序列化并将转换。以下DAX应该执行此操作,但尚未测试,请尝试一下。

True Document Date :=
SWITCH (
    TRUE (),
    AND (
        ISERROR ( SEARCH ( "/", FORMAT ( [Document], "text" ) ) ),
        [Document] >= 32767
    ), FORMAT ( DATE ( 2000, 1, [Document] - 36523 ), "YYYY-MM-DD" ),
    AND (
        ISERROR ( SEARCH ( "/", FORMAT ( [Document], "text" ) ) ),
        [Document] < 32767
    ), FORMAT ( DATE ( 1900, 1, Sheet1[DATE SERIAL NUMBER] ), "YYYY-MM-DD" ),
    NOT ( ISERROR ( SEARCH ( "/", FORMAT ( [Document], "text" ) ) ) ), [Document]
)

True Disposition Date :=
SWITCH (
    TRUE (),
    AND (
        ISERROR ( SEARCH ( "/", FORMAT ( [Disposition], "text" ) ) ),
        [Disposition] >= 32767
    ), FORMAT ( DATE ( 2000, 1, [Disposition] - 36523 ), "YYYY-MM-DD" ),
    AND (
        ISERROR ( SEARCH ( "/", FORMAT ( [Disposition], "text" ) ) ),
        [Disposition] < 32767
    ), FORMAT ( DATE ( 1900, 1, Sheet1[DATE SERIAL NUMBER] ), "YYYY-MM-DD" ),
    NOT ( ISERROR ( SEARCH ( "/", FORMAT ( [Disposition], "text" ) ) ) ), [Disposition]
)

然后,仅将天数相差并将结果存储在新的计算列中:

Date Delta :=
DATEDIFF ( [True Document Date], [True Disposition Date], DAY )