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 的新手,但我创建了一份报告,看起来还不错。
希望对您有所帮助!
我使用 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 的新手,但我创建了一份报告,看起来还不错。
希望对您有所帮助!