12 Month Qty:=CALCULATE (
[Qty],
DATESINPERIOD (
Calendar[Date] ,
MAX(Calendar[Date]),
-12, Month
)
)
目前我有我测量的公式。 但是我想将所有小计和毕业总数设为空白。因此我需要正确地放置ISFILTERED功能。我用if(ISFILTERED())包装公式,但效果不好。那么我该如何正确实现ISFILTERED函数呢?或者如果我必须使用不同的配方,我应该在这种情况下使用什么配方?
答案 0 :(得分:1)
根据您对原始问题的评论:
ISFILTERED()必须以列为参数,而不是度量。 ISFILTERED()将告诉您是否已将过滤器(通过数据透视表行,列,过滤器或切片器)应用于模型中的特定列。因此,您可以使用它来抑制在层次结构的某些级别上对度量的评估。
假设您在某个层次结构的子类别级别上有一个要显示为BLANK的度量类别> SubCategory>项目:
IF(
ISFILTERED(<table>[SubCategory])
,BLANK()
,[Measure]
)
这将在[SubCategory]列应用过滤器的任何位置返回空白。
编辑评论:
您希望空白的层次结构是ISFILTERED()中要引用的列。
我通常会使用带有日期层次结构的模式来显示不同的聚合级别,我倾向于选择HASONEVALUE()作为我的测试。我将在SWITCH()函数中应用一系列这些测试。 SWITCH()只是嵌套IF()的语法糖 - 如果需要引用,你可以查找它。
因此:
MyConditionalMeasure:=
SWITCH( TRUE()
,HASONEVALUE(DimDate[Date]
// This means we're at the date level of the hierarchy
,[BaseMeasure] // The measure to evaluate at that first level
,HASONEVALUE(DimDate[Month])
// This is true for a month or a date only, but we've
// already captured the date possibility above
,[Month-appropriate Aggregation of BaseMeasure]
,HASONEVALUE(DimDate[Year])
// Again, true for a single date or a single month, but
// we've already covered those, so the year level is all
// that's left
,[Year-appropriate Aggregation of BaseMeasure]
,BLANK() // The last argument is taken as a final ELSE
// condition, capturing anything we didn't cover above,
// which would include the grand total - this will blank the
// grand total, or e.g. DimDate[Decade] since that is a
// coarser granularity than we covered with our tests above