Sql server DAX中显示当前业务区域的计算列
我的SSAS模型中有一个具有SCD-type2功能的表Sql server DAX中显示当前业务区域的计算列,sql-server,excel,ssas,powerpivot,dax,Sql Server,Excel,Ssas,Powerpivot,Dax,我的SSAS模型中有一个具有SCD-type2功能的表 CustNr StartDate EndDate BusinessArea 123 2014-12-01 2015-01-01 Norway 123 2015-01-01 - Sweden 我需要一个计算列(DAX),显示当前的业务领域(基于客户编号)。我该怎么做?我听说过“早期”功能,但我对DAX还不熟悉,无法理解它 所需的输出
CustNr StartDate EndDate BusinessArea
123 2014-12-01 2015-01-01 Norway
123 2015-01-01 - Sweden
我需要一个计算列(DAX),显示当前的业务领域(基于客户编号)。我该怎么做?我听说过“早期”功能,但我对DAX还不熟悉,无法理解它
所需的输出如下所示:
CustNr StartDate EndDate BusinessArea CurrentBA
123 2014-12-01 2015-01-01 Norway Sweden
123 2015-01-01 - Sweden Sweden
欢迎所有答案!干杯
(编辑:在“编辑”部分中,请注意左侧的原始连续性-下面的正确测量值)
我怀疑您的[EndDate]实际上是一个文本字段,因此我也怀疑表示当前业务领域的行的[EndDate]的文字值实际上是“-”。如果为空,请使用blank()函数,而不是文本“-”
根据评论进行编辑,通过一些讨论更正了度量定义:
CurrentBusinessArea =
LOOKUPVALUE(
DimCustomer[BusinessArea]
,DimCustomer[CustNr]
,DimCustomer[CustNr]
,DimCustomer[EndDate]
,DATE(BLANK(),BLANK(),BLANK())
)
通常在DAX中,您可以直接测试是否等于BLANK()。它的行为与SQL中的NULL不相似。实际上,您可以创建一个列来测试这一点。如果您执行上述任一操作,则对于[EndDate]为空的行,它们将返回true:
=DimCustomer[EndDate] = BLANK()
=ISBLANK(DimCustomer[EndDate])
=DimCustomer[EndDate] = 0 //implicit conversion 0 = blank
由于某些原因,从日期/时间转换为空白()时出现问题。上面的构造,使用DATE()函数来填充所有BLANK()对我来说是可行的。我假设LOOKUPVALUE()将与文本空白一起工作(有趣的是,如果数据类型是整数,LOOKUPVALUE()将与空白()一起工作)。对此表示歉意。我尝试过这个,但它只显示空白值。您的右EndDate是日期数据类型,因此我使用blank()查找值(DimCustomer[BusinessArea];DimCustomer[CustomerNr];DimCustomer[CustomerNr];DimCustomer[EndDate];blank())
=DimCustomer[EndDate] = BLANK()
=ISBLANK(DimCustomer[EndDate])
=DimCustomer[EndDate] = 0 //implicit conversion 0 = blank