Powerbi 当月总和+;2和下个月+;一个月后

Powerbi 当月总和+;2和下个月+;一个月后,powerbi,dax,powerbi-desktop,Powerbi,Dax,Powerbi Desktop,我需要在DAX中为PowerBI复制一个指标,但我不太确定如何做到这一点 基本原则如下: 事实表:机会 维度:创建日期、关闭日期 指标是这样的,我只举一个例子,因为我真的不知道如何解释它 总数: 创建日期为2月,关闭日期为2月、3月、4月 创建日期为3月,关闭日期为3月,4月 于4月创建并于4月关闭 表/矩阵中每个月都会发生这种情况 看起来我需要一些变量,比如 度量= VAR Month1=总和(ClosedOps),其中ClosedDate介于CurrentMonth和CurrentMonth

我需要在DAX中为PowerBI复制一个指标,但我不太确定如何做到这一点

基本原则如下:

事实表:机会

维度:创建日期、关闭日期

指标是这样的,我只举一个例子,因为我真的不知道如何解释它

总数:

创建日期为2月,关闭日期为2月、3月、4月

创建日期为3月,关闭日期为3月,4月

于4月创建并于4月关闭

表/矩阵中每个月都会发生这种情况

看起来我需要一些变量,比如

度量=

VAR Month1=总和(ClosedOps),其中ClosedDate介于CurrentMonth和CurrentMonth之间+2

VAR Month2=总和(ClosedOps),其中ClosedDate介于CurrentMonth+1和CurrentMonth+2之间

VAR Month3=总和(ClosedOps),其中ClosedDate=CurrentMonth+2

返回月份1+2+3

我的理解是,当我将列MonthYear拖到可视化视图中时,Closed Date筛选器将是表/矩阵可视化视图

编辑:

下面是他们在Excel中所做工作的简化副本

所以左边的数据是事实表。您可以看到OPP何时创建,何时关闭。我添加了创建的MonthYear和关闭的MonthYear。轴心就是现在Excel中的轴心。顶部(列)的日期为YearMonth,行的日期为Closed YearMonth

我需要能够将I3:K5中的数字相加,在示例中,这些数字总计5500

更新:

所以我添加了一个建议的日期维度表,复制了它(一个用于打开日期,一个用于关闭日期),我为每个表添加了一个列DateDIM_键,它只是一个数字索引。事实表中有这些键,它们加载的日期范围相同(2013年至2030年)。事实表中的列ActualValue是我们要求和的列

下面是更新的事实表示例。我直接从这些日期的日期维度中提取DateDIM_键值。

在这里最好添加一个自定义列(在编辑查询下),其中包含每月的日期差异。现在,您可以为您的场景筛选列
LeadTimeInMonth
。如果将字段拖放到可视化视图中,则可以按此列进行筛选

Date.Month([ClosedDAte])-Date.Month([OpenDate])


我不确定您真正想要评估的是什么,但是如果您需要在CurrentMonth和CurrentMonth+2之间准确地进行
ClosedDate
评估,您可以首先从
ClosedDate
评估月份,然后是今天的月份,并在结果之后进行过滤

您需要一个好的日期维度。你需要为OpenDate和CloseDate进行角色扮演。有很多好的约会维度。我喜欢

假设您将“OpenDate”[Month]放在axis标签上

Opportunity Value = SUM ( 'Opportunity'[Value] )
此外,在编写之前的迭代方法时,我意识到我们可以在单个setfilter中完成这项工作:

MyMeasure set =
// MonthIndex is in my date dimension - super useful for arithmetic on dates.
// Read the readme.
VAR C = SELECTEDVALUE ( 'OpenDate'[MonthIndex] ) // want a short name below
// Table literal syntax - two column table, where each parenthesized expression
// forms a row. If it were much more, I'd do something clever with generate, but
// six cases are easy to write by hand.
VAR MonthFilters = {
  (C, C),
  (C, C+1),
  (C, C+2),
  (C+1, C+1),
  (C+1, C+2),
  (C+2, C+2)
}
RETURN
  CALCULATE (
    [Opportunity Value],
    TREATAS ( MonthFilters, 'OpenDate'[MonthIndex], 'CloseDate'[MonthIndex] )
  )
我更喜欢后者,但直到编写了迭代版本后才想到它,所以我将两者都留下。基于集合的应该表现得更好

编辑:我忘记了一些截图:

以下是角色扮演日期dim的关系图:

这是两种措施的视觉效果:


你能提供一个数据样本,这样我们就不会猜测了吗?请参阅更新的帖子和屏幕快照。你需要更新你的差分公式,以涵盖多年。想象一下2018年12月开放,2019年1月关闭。这是1-12=-11。如果是负数,你可以加上12,以在几个月内恢复到一个适当的交付周期。或者你可以利用一个月的索引列,或者如果你是从数据库中采购,你可以使用它的日期差异功能。你也可以在M持续时间类型中减去一个月。这看起来不错,我会尝试在我的报告中实现,看看这是否奏效。这将需要一些重大修改。我现在的问题是,我们从日期仓库装货。事实表有日期键,而不是维度表中的日期字段。虽然现在我可以引入这些列并将它们添加到事实表中。这张桌子看起来真不错。你应该让它成为可用的SQL!我有一个需要大量清理的SQL版本。这将与日期键配合使用。您可以简单地派生一个日期键或将其加入到我共享的日期维度。获得关键点后,可以按原样使用尺寸标注。您不应该尝试将其他dim列放入facts。幸运的是,DateDIM_键只是一个数字索引。所以我把它添加到DateDim中,但是我没有得到任何返回值。我只尝试实现基于集合的方法。将尝试另一种方法。除了
TREATAS
之外,您可能还需要
CALCULATE
中的
ALL('OpenDate')、ALL('CloseDate')
,具体取决于视觉效果的配置方式。不过,很高兴它起作用了。
MyMeasure set =
// MonthIndex is in my date dimension - super useful for arithmetic on dates.
// Read the readme.
VAR C = SELECTEDVALUE ( 'OpenDate'[MonthIndex] ) // want a short name below
// Table literal syntax - two column table, where each parenthesized expression
// forms a row. If it were much more, I'd do something clever with generate, but
// six cases are easy to write by hand.
VAR MonthFilters = {
  (C, C),
  (C, C+1),
  (C, C+2),
  (C+1, C+1),
  (C+1, C+2),
  (C+2, C+2)
}
RETURN
  CALCULATE (
    [Opportunity Value],
    TREATAS ( MonthFilters, 'OpenDate'[MonthIndex], 'CloseDate'[MonthIndex] )
  )