Power BI DAX CountIF 查询

时间:2021-02-11 14:08:02

标签: powerbi dax powerquery

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

我在 Power BI 中有 2 个表。

TableA

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

Table B

表 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 之间的函数。 细节: 图案= 参数=[列表]

任何帮助都会很有帮助。

谢谢

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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

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

拥有这样的模型充其量是次优的,但这是一种使用 DAX 明确执行您想要的操作的方法。

如果您将这两个表合并为一个,这会变得更容易 - 您只需创建一个矩阵视觉,将 Company 和 Product 放在行中,将 Year 放在列中,并将行计数作为度量。