Power BI 日期比较
Power BI Date Comparision
我正在构建一个报告来控制一些 material 的库存。我有一个包含大量运动数据(330 万行)的列表...每个运动都有自己的中心(运动发生的地方)、material 代码、日期(运动发生的时间)、类型移动(入口、消费、转移...)、数量、价值等。我需要检查每个 material 和中心,最后一次消费移动发生的时间,与日历中的最大日期进行比较 table,计算间隔天数,分组(0-30天、31-90天、91-180天等...)。
有没有办法只使用度量来做到这一点?我使用 tables 完成,但我有一个静态结果。我需要以动态方式执行此操作(过滤我的日历 table 将调整结果)...
我的事实table具有下图所示的结构。
对于每个 [Cen.],[Material],通过 [TMv] = 201 或 261 过滤,return 公式 Today() - Max([Dt.lçto])
如果有人能提供帮助,我将不胜感激。
非常感谢!!!
经过多次尝试和失败后,我想出了一个解决这个问题的方法,使用下面的代码。根据应用的过滤器,下面的代码用于计算上次移动日期。
Último Mov (data) =
CALCULATE(
MAXX(
ADDCOLUMNS(
SUMMARIZE(
fSAP_MB51;
fSAP_MB51[Material]
);
"Último Movimento";
VAR MAXDATE =
MAXX(
FILTER(
'fSAP_MB51';
'fSAP_MB51'[TMv] IN {"201";"221";"241";"261";"281";"543"} &&
'fSAP_MB51'[Material] = EARLIER('fSAP_MB51'[Material])
);
'fSAP_MB51'[Dt.lçto.]
)
VAR MINDATE =
MINX(
FILTER(
'fSAP_MB51';
'fSAP_MB51'[TMv] IN {"101";"102";"861";"862"} && //
'fSAP_MB51'[Material] = EARLIER('fSAP_MB51'[Material])
);
'fSAP_MB51'[Dt.lçto.]
)
RETURN
CALCULATE(
MAX('dCalendar'[Date]) -
SWITCH(
TRUE();
AND(ISBLANK(MAXDATE);ISBLANK(MINDATE)) ; DATE(2018;03;31);
ISBLANK(MAXDATE) ; MINDATE;
ISBLANK(MINDATE) ; MAXDATE;
MAXDATE
)
);
"Qtde Estoque";[Qtde Acumulada ALL]
);
TODAY() - [Último Movimento]
);
FILTER(
ALLSELECTED('dCalendar'[Date]);
ISONORAFTER('dCalendar'[Date]; MAX('dCalendar'[Date]); DESC)
);
dCalendar[FutureDate] = "Passado"
)
我正在构建一个报告来控制一些 material 的库存。我有一个包含大量运动数据(330 万行)的列表...每个运动都有自己的中心(运动发生的地方)、material 代码、日期(运动发生的时间)、类型移动(入口、消费、转移...)、数量、价值等。我需要检查每个 material 和中心,最后一次消费移动发生的时间,与日历中的最大日期进行比较 table,计算间隔天数,分组(0-30天、31-90天、91-180天等...)。
有没有办法只使用度量来做到这一点?我使用 tables 完成,但我有一个静态结果。我需要以动态方式执行此操作(过滤我的日历 table 将调整结果)...
我的事实table具有下图所示的结构。
对于每个 [Cen.],[Material],通过 [TMv] = 201 或 261 过滤,return 公式 Today() - Max([Dt.lçto])
如果有人能提供帮助,我将不胜感激。
非常感谢!!!
经过多次尝试和失败后,我想出了一个解决这个问题的方法,使用下面的代码。根据应用的过滤器,下面的代码用于计算上次移动日期。
Último Mov (data) =
CALCULATE(
MAXX(
ADDCOLUMNS(
SUMMARIZE(
fSAP_MB51;
fSAP_MB51[Material]
);
"Último Movimento";
VAR MAXDATE =
MAXX(
FILTER(
'fSAP_MB51';
'fSAP_MB51'[TMv] IN {"201";"221";"241";"261";"281";"543"} &&
'fSAP_MB51'[Material] = EARLIER('fSAP_MB51'[Material])
);
'fSAP_MB51'[Dt.lçto.]
)
VAR MINDATE =
MINX(
FILTER(
'fSAP_MB51';
'fSAP_MB51'[TMv] IN {"101";"102";"861";"862"} && //
'fSAP_MB51'[Material] = EARLIER('fSAP_MB51'[Material])
);
'fSAP_MB51'[Dt.lçto.]
)
RETURN
CALCULATE(
MAX('dCalendar'[Date]) -
SWITCH(
TRUE();
AND(ISBLANK(MAXDATE);ISBLANK(MINDATE)) ; DATE(2018;03;31);
ISBLANK(MAXDATE) ; MINDATE;
ISBLANK(MINDATE) ; MAXDATE;
MAXDATE
)
);
"Qtde Estoque";[Qtde Acumulada ALL]
);
TODAY() - [Último Movimento]
);
FILTER(
ALLSELECTED('dCalendar'[Date]);
ISONORAFTER('dCalendar'[Date]; MAX('dCalendar'[Date]); DESC)
);
dCalendar[FutureDate] = "Passado"
)