我有一张有客户交易记录的表。我需要在每一行中创建一个新列:
以下是我尝试的DAX代码:
Customer Churn =
IF (
Book[Date]
= LOOKUPVALUE ( Book[Date].[Date], Book[customer id], FIRSTDATE ( Book[Date] ) ),
"Onboarding",
IF (
Book[Date]
= LOOKUPVALUE ( Book[Date].[Date], Book[customer id], LASTDATE ( Book[Date] ) ),
"Offboarding",
"Existing"
)
)
但是我遇到以下错误:
The column 'Book[customer id]' either doesn't exist or doesn't have a relationship to any table available in the current context.
当我指的是同一张表时,无法想到使用RELATED()。
问题出在哪里? 如果无法通过这种方式进行编码,有什么解决方法?
谢谢!
答案 0 :(得分:0)
在一些帮助下,我找到了解决方案。参考dax/lookupvalue-function-dax,您将发现原始脚本中的错误。 search_columnName和search_value是一对。
LOOKUPVALUE( <result_columnName>, <search_columnName>, <search_value>[, <search_columnName>, <search_value>]…)
因此公式无法返回正确的结果。
LOOKUPVALUE ( Book[Date].[Date], Book[customer id], FIRSTDATE ( Book[Date] ) )
解决方案:
Customer Churn =
VAR startDate =
CALCULATE ( FIRSTDATE ( Book[Date] ), ALLEXCEPT ( Book, Book[Customer Id] ) )
VAR endDate =
CALCULATE ( LASTDATE ( Book[Date] ), ALLEXCEPT ( Book, Book[Customer Id] ) )
RETURN
IF (
Book[Date]
= LOOKUPVALUE (
Book[Date],
Book[customer id], [Customer Id],
Book[Date], startDate
),
"Onboarding",
IF (
Book[Date]
= LOOKUPVALUE (
Book[Date],
Book[customer id], [Customer Id],
Book[Date], endDate
),
"Offboarding",
"Existing"
)
)