分享

Power BI高手信手拈来的{ },你竟然还不知道?

 PowerBI星球 2024-05-13 发布于河南
平时在用PowerBI做分析、或者向PowerBI高手请教问题时,你可能会注意到大括号{ }的存在,它在PowerBI的用法非常广泛,本文就来详细介绍一下它的使用技巧。
让我们先来看看{ }在DAX中的功能和基本用法。

{ }用来构建一个表,比如在PowerBI中点击“新建表”,输入:

表1 = {"A","B","C"}

它会生成一列多行的表,该列内容就是{}中的信息,列名默认是[Value]。

如果要生成一行的表,可以在{}中套一对括号():

表2 = { ("A","B","C") }

它会生成一行多列的表,所有的信息都在同一行中,每列的标题默认是[Value1]、[Value2]……

如果要生成多行多列的表,应该怎么做呢?
通过上面两种情况,你应该也想到了,一个()就是一行,()中有几个数据就是几列,那么可以在{}中按下面这样写来实现多行多行的目的。

表3 =
 {
    ("A",1),
    ("B",2),
    ("C",3)
}


{ }生成的表,如果想直接将列名修改为特定的名称,可以通过嵌套SELECTCOLUMNS函数来实现。
表4 =
SELECTCOLUMNS(
    {
        ("A",1),
        ("B",2),
        ("C",3)
    },
    "类别",[Value1],
    "序号",[Value2]
)


以上方式不仅可以修改列名,也可以修改列的顺序,如果想让序号放到第一列,只需要在上面的表达中,将序号写到类别的前面就可以了。
更改列顺序的问题也可参考:PowerQuery查询加载到数据模型后,列的顺序变了怎么办?

以上就是{}的基本用法,灵活掌握以后,就可以帮我们做很多工作,下面是几个常见的应用场景。

1. 构造辅助表
之前介绍过如何在PowerBI中创建辅助表,其中DAX方式制作辅助表,主要就是通过{ }来实现的,参考:Power BI 辅助表制作方式汇总

2. 对多列统计计算
如果某个表的多列进行统计分析,比如下表:
如果想增加一列,统计4个指标列的每行非空数据有多少,就可以利用{}来实现。
点击“新建列”。输入:
非空指标数量 =
COUNTROWS(
    FILTER( { [指标1],[指标2],[指标3],[指标4] },[Value]<>BLANK())
)
这里的用法就是将4个指标列利用{ }生成一个表,然后用FILTER筛选表中不为空的行,再利用COUNTROWS函数进行计数。
结果如下:

如果想统计4个指标列每行的最大值,用MAX函数只能写两个参数,需要嵌套多个MAX才能实现,而用{}构建一个表,对这个表求最大值就简单多了,新建列:
本行最大值 =
MAXX(
    { [指标1],[指标2],[指标3],[指标4] },
    [Value]
)

如果想统计4个指标所有行范围内的最大值,可以先用MAX计算每列的最大值,然后再统计每列最大值的最大值。

整体最大值 =
MAXX(
    { MAX('表'[指标1]),MAX('表'[指标2]),MAX('表'[指标3]),MAX('表'[指标4]) },
    [Value]
)


上面是通过计算列来介绍这种需求的实现方式,如果是求多个度量值的最大值,也是一样的思路。

3. 结合IN 进行查询筛选
关于IN的用法,之前也介绍过,参考:一文掌握Power BI中的IN运算符
其中IN 后面的表,一般是通过{ }来构造的,没有用过的请仔细看看上述文章。


4. 利用新建表来返回一个值
如果你想通过"新建表"来验证某个表达式的结果,而这个表达式返回的是一个值,系统会报错的,比如下面的情况:

对于这种情况,可以在表达式外面套个{ }来查看结果,它将值强制转换为表,就不会报错了。
从这里也可以看出,{ }中不仅可以放常量,也是可以放入表达式的。

同样的,如果你的表达式返回的是一张表,但是点击的“新建度量值”,也是会报错的(可参考这个例子:在PowerBI中创建日期表,你可能会遇到的3个问题)。

平时在写DAX的时候,先搞清楚你写的度量值还是建表,点击对应的功能,不能乱用。



以上就是{}的用法和常见应用场景,希望对你有帮助~




    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多