Power BI DAX CountIF 查询

Posted

技术标签:

【中文标题】Power BI DAX CountIF 查询【英文标题】:Power BI DAX CountIF Query 【发布时间】:2021-02-11 14:08:02 【问题描述】:

我已经做了很多寻找正确答案的工作,但我似乎找不到我想要的。

我在 Power BI 中有 2 个表。

表 A 显示年份、公司和产品,并有一列将公司和产品编号连接在一起。

表 B 与第一个表类似,但年份不同。在这张表中,我做了一个计数,看看该公司和产品是否在前一年出现过。在 Excel 中使用

=COUNTIF(TableA[[#All],[ComProd]],[@ComProd])

我可以在 PowerBI DAX/查询编辑器中使用类似的过程来复制它吗?

我尝试使用以下内容创建一个自定义列,希望它可以工作(它没有)-

if [ComProd] = #"TableA"[ComProd] then 1 else 0

我还在高级编辑器中尝试过以下操作:

= Table.AddColumn (
    "Count", each
      Table.RowCount(Table.SelectRows(
        #"TableA",
        each [ComProd] = [ComProd])))

但这给了我一个错误:

Expression.Error: 2 个参数被传递给一个期望在 3 到 4 之间的函数。 细节: 模式= 参数=[列表]

任何帮助都会很有帮助。

谢谢

【问题讨论】:

您可以在ComProd 上合并匹配并计算每个连接表中有多少行。 【参考方案1】:

好吧,我会将这两个表合并为一个,因为从长远来看它更实用,但假设它们是两个表,这里有一种方法(假设两个表之间没有关系):

假设您有一个基于第二个表格(2017 年)的表格视觉效果。您将构建此度量并以相同的视觉效果显示:

ComProdCount = COUNTROWS(FILTER(Table2016, Table2016[ComProd] = SELECTEDVALUE(Table2017[ComProd])))

或者如果它是一个计算列:

ComProdCount = COUNTROWS(FILTER(Table2016, Table2016[ComProd] = Table2017[ComProd]))

您还可以创建第三个表,其中列出所有唯一 ComProd 值并创建与 Table2016 和 Table2017 的关系,然后从这个新表中直观地显示 ComProd 并计算 Table2016 和 Table 2017 中的行数。

拥有这样一个模型充其量是次优的,但这是一种使用 DAX 明确地做你想做的事情的方法。

如果您将这两个表合并为一个,这会更容易 - 您只需创建一个矩阵视觉对象,将 Company 和 Product 放在行中,将 Year 放在列中,并将 count 行放在 measure 中。

【讨论】:

以上是关于Power BI DAX CountIF 查询的主要内容,如果未能解决你的问题,请参考以下文章

在 power BI 中提供电源查询技术/DAX 查询以填充列中的值

Power BI--DAX函数总结

Power BI 使用 DAX 将八位 yyyymmdd 转换为日期

Power BI DAX 度量计算

Power BI Desktop DAX 重启运行总计列

POWER BI - 递归计算我的 dax 度量的解决方法?