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

Sta*_*eas 5 ssas mdx max min powerbi

我将PowerBI Desktop / Service用作前端,将Analysis Services MultiDimension用作后端。我想创建一个复杂的计算所得成员,但该成员的某些部分存在问题。

例如,我需要使用filter元素切片器中使用的TIME维度的MIN / MAX DATE。

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

第一:

MAX
(
   EXISTING
   [Time].[DATE].Members,
   [Time].MEMBER_KEY
)
Run Code Online (Sandbox Code Playgroud)

第二个:

MAX
(
   NONEMPTY
   [Time].[DATE].Members,
   [Time].MEMBER_KEY
)
Run Code Online (Sandbox Code Playgroud)

第三个:

MAX
(
   EXISTING
   [Time].[YQM].[DATE].Members,
   [Time].[YQM].MEMBER_KEY
)
Run Code Online (Sandbox Code Playgroud)

第四名:

MAX
(
   NONEMPTY
   [Time].[YQM].[DATE].Members,
   [Time].[YQM].MEMBER_KEY
)
Run Code Online (Sandbox Code Playgroud)

我也尝试通过使用像这样的内部度量来尝试不同:

MAX
(
 (
  [Time].[DATE].Members,
  [Measures].[Sales Amount]
 ),
[Time].[DATE].Member_Key
)
Run Code Online (Sandbox Code Playgroud)

所有这些都显示了TIME维度的最后一个DATE,而不是PowerBI的filter-slider滑块中选择的MAX。有任何想法吗?

奇怪的是,如果我将filter-element用作simple-selection-drop-down而不是range-slicer,则可以使用以下代码检索当前选择的日期:

MAX
(
   EXISTING
   [Time].[YQM].CURRENTMEMBER,
   [Time].[YQM].MEMBER_KEY
)
Run Code Online (Sandbox Code Playgroud)

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

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

也许是由于范围问题?

Hug*_*aun 1

正如您所提到的,问题不是来自 PowerBI,而是来自对 MultiDim 模型的查询。

您可以通过在 Excel 上浏览计算成员并按日期进行筛选来重现它。如果您只选择一个日期,成员会正确刷新并显示该日期,但如果您选择多个日期,则会显示“31”,因为“31”是所有成员的最大值。我尝试使用DYNAMIC SET纠正该行为:

CREATE DYNAMIC SET setDate AS 
{
   NONEMPTY([Time].[DATE].Members)
};
Run Code Online (Sandbox Code Playgroud)

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

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

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

在 Excel 中,即使我选择多个日期,我的新度量也能正常工作。我是 PowerBI 的新手,但我创建了一份报告,看起来没问题。

我希望它有帮助!