添加订单详细信息 PowerBI DAX 时时间计算间隔中断

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

我有一个包含订单和相关信息的 Excel 文件。我这次需要的是时间上一张订单与上一张订单之间的时间间隔。 多个订单可以具有相同的交货日期。 我只在查看日期本身时就成功了,如下所示: without order description

一旦我只引入订单号,或者甚至只是尝试平均间隙测量,它只会输出 0,如下所示: with order descrption

间隙设置为查找重复列中的最高值,条件是它低于dates_measure 值。它工作得很好,我可以打乱行而不会弄乱值。我不明白为什么添加重复项(或实际上不是)会阻止它工作。

以下是与之前最高日期相关的代码:

Date la plus élevée inférieure = 
VAR CurrentDate = 'Excel du Report'[Date_measure]

VAR HigherDate =
    CALCULATE (
        MAX ( 'Excel du Report'[Jour calendaire] ),
        FILTER (
            ALL('Excel du Report'[Jour calendaire]),  
            'Excel du Report'[Jour calendaire] < CurrentDate
        )
    )
RETURN
     IF (
        ISBLANK(HigherDate),
        CurrentDate, 
        HigherDate
    )

这是差距一:

Gap_between_dates = 
VAR CurrentDeliveryDate = [Date_measure]
VAR PreviousDeliveryDate = [Date la plus élevée inférieure]

-- Calculer la différence entre les dates de livraison
VAR Difference = CurrentDeliveryDate - PreviousDeliveryDate

-- Calculer la somme du numéro de jour dans la semaine de ARGH et de la différence
VAR TotalDays = WEEKDAY(PreviousDeliveryDate, 2) + Difference

-- Vérifier si le total dépasse 5, indiquant un week-end
VAR AdjustedTotalDays =
    IF(
        TotalDays > 5,
        Difference - (FLOOR(TotalDays / 7,1) * 2),
        Difference
    )

RETURN
    AdjustedTotalDays * 1

该东西的最终用途是全球平均值,可以通过接收客户端进行切片。比如,我们平均每 X 天向该客户交付一次,平均每 Y 天向该客户交付一次,并且在全球范围内,每 Z 天向该客户交付一次......好吧,你明白了。 不知道我将如何处理重复的日期(它们会显示相同的间隙/间隔 N 次),但我相信日期上的不同应该可以解决问题。

感谢您的阅读,希望得到任何指导!

我尝试在网上查找。 我尝试用另一种方式进行计算。 没有任何效果。

抱歉这部分有点空,我的脑袋也基本上空了,精疲力尽了。

如果已经在某个地方得到了答案,我会感到非常愚蠢,但我一生都找不到它。

powerbi dax
1个回答
0
投票

我还不能发表评论,但我想开始针对第一个和第二个要求采取这一措施,然后在此基础上使一切正确(您可以对我的帖子发表评论,我也可以对此发表评论)。如果我完全错了,请说出来,我可以编辑这篇文章。

对于每个客户的平均差距,您可以这样做:

Measure 8 = 
VAR AverageGapByCustomer = AVERAGEX(
    'Table (2)',
    VAR CurrentDate = 'Table (2)'[Order Date]
    VAR PreviousDate = MAXX(
    FILTER('Table (2)', [Order Date] < CurrentDate),
    [Order Date]
)
    VAR GAP = DATEDIFF(PreviousDate, CurrentDate, DAY)
    RETURN GAP
)
RETURN AverageGapByCustomer

(!):我在添加了 CustomerID 的简单表格视觉效果上使用此度量 作为列来创建过滤器上下文。

  • 本质上,它根据“表”对特定客户 ID 的“差距”值进行平均。
  • AVERAGEX 迭代器针对特定客户 ID 迭代过滤后的“表 (2)”,这只是整个表的子集。这是因为我添加了客户 ID 作为过滤器上下文。
  • 对于表中的每一行:
    • 它选择该行的当前日期
    • 它使用 maxx 函数过滤“过滤表”以获取之前的订单日期。计算(...)会创建上下文转换并给出错误的日期。
    • 它计算间隙(尚未针对周末进行调整)并存储它
  • 最后,它对所有这些进行平均,以获得客户的单一“平均”价值。

样本数据(包括用于验证结果的计算列): |订购日期 |客户 ID |差距| |------------------------|------------|------| | 2024 年 3 月 1 日星期五 | 1 | | | 2024 年 3 月 2 日星期六 | 2 | | | 2024 年 3 月 15 日星期五 | 2 | 13 | | 2024 年 3 月 28 日星期四 | 3 | | | 2024 年 4 月 1 日星期一 | 1 | 31 | | 2024 年 4 月 3 日星期三 | 3 | 6 | | 2024 年 4 月 3 日星期三 | 1 | 2 |

结果: |客户 ID |测量 | |-------------|---------| | 1 | 16,50 | 16,50 | 2 | 13,00 | 13,00 | 3 | 6,00 |

全球平均水平为 13。


也许更简单的方法是创建一个计算列并计算那里的间隙?

Gaps = 
VAR CurrentCustomer = 'Table (2)'[CustomerId]
VAR CurrentDate = 'Table (2)'[Order Date]
VAR _table = MAXX(
    FILTER('Table (2)', [CustomerId] = CurrentCustomer && [Order Date] < CurrentDate),
    [Order Date]
)
VAR GAP = DATEDIFF(_table, CurrentDate, DAY)
RETURN GAP
© www.soinside.com 2019 - 2024. All rights reserved.