Power BI查询错误:该列不存在或与当前上下文中可用的任何表没有关系

时间:2018-08-31 16:08:25

标签: powerbi lookup dax powerquery

我有一张有客户交易记录的表。我需要在每一行中创建一个新列:

  1. 如果它是“客户ID”的首次出现,它将带有“入职”信息
  2. 如果它是最后一次出现的“客户ID”,则将显示“离职”
  3. 其余的将是“现有的”

以下是我尝试的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()。

问题出在哪里? 如果无法通过这种方式进行编码,有什么解决方法?

谢谢!

1 个答案:

答案 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"
    )
)