MDX 从切片器元素获取最小最大日期

MDX Get Min Max Date From Slicer Element

我使用 PowerBI Desktop/Service 作为前端,使用 Analysis Services Multidimensional 作为后端。我想创建一个复杂的计算成员,但我在成员的某些部分有问题。

例如,我需要在过滤器元素切片器中使用的 TIME 维度的 MIN/MAX 日期。

我已经尝试了一些简单的计算成员开始:

第一个:

MAX
(
   EXISTING
   [Time].[DATE].Members,
   [Time].MEMBER_KEY
)

第二个:

MAX
(
   NONEMPTY
   [Time].[DATE].Members,
   [Time].MEMBER_KEY
)

第三个一:

MAX
(
   EXISTING
   [Time].[YQM].[DATE].Members,
   [Time].[YQM].MEMBER_KEY
)

四一:

MAX
(
   NONEMPTY
   [Time].[YQM].[DATE].Members,
   [Time].[YQM].MEMBER_KEY
)

我也试过不同的方法,像这样在里面使用一个措施:

MAX
(
 (
  [Time].[DATE].Members,
  [Measures].[Sales Amount]
 ),
[Time].[DATE].Member_Key
)

它们都显示了 TIME 维度的最后一个 DATE,而不是在 PowerBI 的过滤器元素滑块中选择的 MAX。 有什么想法吗?

奇怪的是,如果我将过滤器元素用作简单选择下拉列表而不是范围切片器,那么,我可以使用以下代码检索当前选择的日期:

MAX
(
   EXISTING
   [Time].[YQM].CURRENTMEMBER,
   [Time].[YQM].MEMBER_KEY
)

但是当我切换到范围切片器相同的代码时,returns 零(0)!

另外,我已经在不同的表格模型中使用 DAX 完成了这个并且工作正常,但是对于多维模型来说似乎太难了

可能是范围的问题?

如您所述,问题不是出自 PowerBI,而是出自对 MultiDim 模型的查询。

您可以通过在 Excel 上浏览您的计算成员并按日期过滤来重现它。如果你只取一个日期,成员会正确刷新并显示这个日期,但如果你select多个日期,它会显示“31”,因为“31”是你所有成员的最大值。我试图用 DYNAMIC SET 纠正这种行为:

CREATE DYNAMIC SET setDate AS 
{
   NONEMPTY([Time].[DATE].Members)
};

然后,我用这个集合来计算我的度量:

CREATE MEMBER CURRENTCUBE.[Measures].[MAX_DATE]
AS MAX(
   setDate,
   CDate([Time].[DATE].Properties('Key0', Typed)
),
VISIBLE = 1; 

(请注意 CDate 函数,我用它将我的 MEMBER_KEY 转换为日期,因此如果您使用美国格式,则 1/31/2020 > 9/9/2000,但您可能根据您的型号不需要它。)

在 Excel 中,即使我 select 多个日期,我的新措施也能正常工作。我是 PowerBI 的新手,但我创建了一份报告,看起来还不错。

希望对您有所帮助!