在DAX中计算列以显示当前BusinessArea

我有一个SCD-type2function的SSAS模型的表格。

CustNr StartDate EndDate BusinessArea 123 2014-12-01 2015-01-01 Norway 123 2015-01-01 - Sweden 

我需要一个显示当前BusinessArea(基于客户编号)的计算列(DAX)。 我如何处理它? 我听说过“早期”function,但我是DAX的新手,无法摆脱困境。

所需的输出将如下所示:

 CustNr StartDate EndDate BusinessArea CurrentBA 123 2014-12-01 2015-01-01 Norway Sweden 123 2015-01-01 - Sweden Sweden 

欢迎所有的答案! 干杯!

LOOKUPVALUE()

(编辑:注意原文左边的连续性 – 编辑部分下面的正确措施)

 CurrentBusinessArea = LOOKUPVALUE( DimCustomer[BusinessArea] // Lookup column - will return value // matching search criteria below. ,DimCustomer[CustNr] // Search column 1. ,DimCustomer[CustNr] // Value to match to search column 1 - // this is evaluated in row context. ,DimCustomer[EndDate] // Search column 2. ,"-" // Literal value to match for search // column 2. ) 

我怀疑你的[EndDate]实际上是一个文本字段,所以我也怀疑表示当前业务领域的行的[EndDate]的字面值实际上是“ – ”。 如果它是空的,使用BLANK()函数而不是文字“ – ”。

根据评论编辑 ,修正了一些讨论的测量定义:

 CurrentBusinessArea = LOOKUPVALUE( DimCustomer[BusinessArea] ,DimCustomer[CustNr] ,DimCustomer[CustNr] ,DimCustomer[EndDate] ,DATE(BLANK(),BLANK(),BLANK()) ) 

通常在DAX中,您可以直接testing是否等于BLANK()。 它往往不会像SQL中的NULL那样起作用。 实际上,你可以创build一个列来testing这个。 如果你做任何这些,他们返回true的空白行[EndDate]:

 =DimCustomer[EndDate] = BLANK() =ISBLANK(DimCustomer[EndDate]) =DimCustomer[EndDate] = 0 //implicit conversion 0 = blank 

出于某种原因,在从date/时间到BLANK()的转换中存在一个问题。 上面的构造,使用与所有BLANK()一起提供的DATE()函数适用于我。 我曾经假设LOOKUPVALUE()会使用空白字符(有趣的是,如果数据types是Integer,则LOOKUPVALUE()与BLANK()一起工作)。 道歉。