首页 > 解决方案 > 在 Power BI Desktop DAX 论坛中应用筛选器的问题

问题描述

我在使用 power bi 桌面时遇到问题。我有一个 csv 文件作为数据源,并且我有一个包含多个值的列,比如“abc、def”、“jkl”、“zyz”等。

在这里,我需要生成一个带有显示 "def" & "jkl" 的行的报告。如何使用 DAX 过滤器命令对其进行过滤。我想在 Power BI 报告中仅获取、过滤两个值 CTF 和 EVE。我尝试创建一个计算列并应用以下代码,但它没有工作:

Columnjkl = FILTER((Table1,OR(Table1[mycolumn1] == "def" || "jkl"))

filter-2cols-ctf-eve-

标签: powerbipowerbi-desktop

解决方案


您需要阅读如何编写 DAX 语法,查看此页面以了解如何使用 FILTER 函数(FILTER)以及如何使用 OR 函数(OR)

基本上,Filter 返回一个表,所以用它来计算列是行不通的。但是,通过在 CALCULATE 中实现 FILTER 函数,您可以更改/修改 CALCULATE 的主要参数将评估的内容。DAX 中的计算流程是这样的:首先评估过滤器参数,然后评估聚合(或其他)。例子:

NumberOfRowsWithABC = 
CALCULATE = 
    COUNTROWS('Table1'),
    FILTER(
        'Table1',
        'table1[mycolumn1] = "abc"
    )
)

首先,FILTER 函数仅选择“Table1”中 [mycolumn1] 具有文本值 abc 的行。然后它将这个简化的表传递给 COUNTROW 函数,该函数计算传递给它的表中的行数。

OR 函数的语法错误。你应该这样写:

OR(
    'Table1'[mycolumn1] = "def",
    'Table1'[mycolumn1] = "jkl"
)

也许编写此 OR 函数的更好方法是使用 in-command 作为计算函数的过滤器参数:

NumberOfRowsWith_def_and_jkl =
CALCULATE(
    COUNTROWS('Table1'),
    'Table1'[mycolumn1] in {"def", "jkl"}
)

但正如 Gangula 所写,您不需要使用 FILTER 功能过滤“Table1”,这一切都可以在仪表板上直观地完成。


推荐阅读