Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server DAX中显示当前业务区域的计算列_Sql Server_Excel_Ssas_Powerpivot_Dax - Fatal编程技术网

Sql server DAX中显示当前业务区域的计算列

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还不熟悉,无法理解它 所需的输出

我的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      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