我建议的两种方法是计算列或度量。
计算列:
Outside Date Range =
VAR rowsOutsideRange =
CALCULATE (
COUNTROWS ( Main2 ),
FILTER (
RELATEDTABLE ( Main2 ),
Main2[Time] < Main[Start]
|| Main2[Time] > Main[Finish]
)
)
RETURN
IF ( rowsOutsideRange > 0, TRUE (), FALSE () )
您的解决方案非常接近!由于您在两个表之间有关系RELATEDTABLE 将只返回相关行,这消除了LOOKUPVALUE() 的必要性。此外,计算行数就足够了,因为我们只想知道是否存在超出范围的行,而不是有多少。
您也可以创建一个度量:
Outside Date Range Measure :=
VAR rowsOutsideRange =
CALCULATE (
COUNTROWS ( Main2 ),
FILTER (
Main2,
Main2[Time] < MIN ( Main[Start] )
|| Main2[Time] > MAX ( Main[Finish] )
)
)
RETURN
IF ( rowsOutsideRange > 0, TRUE (), FALSE () )
这与计算列非常相似,唯一的一点是我们需要汇总开始日期和结束日期。就其本身而言,该度量没有任何价值,它需要被项目分割才能正确。如果您真的想要,您可以使用 SUMX() 类型的构造来创建一个整体 TRUE/FALSE 语句,该语句告诉您是否有任何项目的行超出其范围,但对于您的用例,我看不到这样做的好处那个。
计算列和度量之间的选择取决于代码的易读性和资源使用情况。计算度量使用更多内存,度量使用更多 CPU。
看看你的情况,我会选择一个计算列,这似乎是最简单明了的解决方案。
希望有帮助!
一月