深入浅出DAX:SELECTEDVALUE()

深入浅出DAX:SELECTEDVALUE()

SELECTEDVALUE(),如果筛选 columnName 的上下文后仅剩下一个非重复值,则返回该值。否则返回alternateResult,语法如下:

SELECTEDVALUE(
  <columnName>
  [, <alternateResult>]
)

当仅选择某一列时,可用SELECTEDVALUE()函数去替换IF()+HASONEVALUE(),该函数的第2个参数为可省参数。当SELECTEDVALUE()置于分母中时,建议将第2个参数指定为1。

以下为SELECTEDVALUE()函数的常见应用场景。

01、单位转换

加载DEMO.xlsx中的装货表。创建度量值M.装卸数,表达式如下:

M.装载量 =
SUMX (
    '装货',
    '装货'[质量]
        * SWITCH (
TRUE (),
            '装货'[单位] = "吨",'装货'[质量] * 1000,
            '装货'[单位] = "克",'装货'[质量] / 1000
        )
)

单击可视化区域的“卡片图”。选择“字段”按钮,将M.装载量放入“值”区域。返回的值如图1所示。

Power BI默认的显示单位为无、千、百万、十亿、万亿,这些显示方式在日常识别时显得很别扭。手动创建辅助表(表名:单位表),将单位设置为“一、万、亿”三档,表达式如下:

单位表 =
DATATABLE (
    "索引", INTEGER,
    "单位", STRING,
    "单位值", INTEGER,
    {
        { 1, "1", 1 }, //”1”,出于解决中文排序问题考虑的
      { 2, "万", 10000 },
        { 3, "亿", 100000000 }
    }
)

该表无须与数据模型创建关系,如图2所示。 

■ 图2  创建的单位表

创建度量值M.装载量转换,表达式如下:

M.装载量转换 = [M.装载量]/SELECTEDVALUE('单位表'[单位值],1)

以上度量值等价于度量值M.装载量转换A,表达式如下:

M.装载量转换A =
[M.装载量]
    / IF (
        HASONEVALUE ( '单位表'[单位值] ),
       VALUES ( '单位表'[单位值] ),
      1
    )

单击可视化区域的“卡片图”。选择“字段”按钮,将度量值M.装载量转换放入“值”区域;选择“格式”按钮,将“显示单位”设置为无。复制该卡片图,将其中的“字段”更改为M.装载量转换A。返回的值如图3所示。

■ 图3 装载量的显示单位(1)

单击可视化区域的“卡片图”,选择“字段”为单位表中的单位字段。单击“切片器”中的单位万,返回的值如图4所示。

■ 图4 装载量的显示单位(2)

图4中,SELECTEDVALUE()及其类似功能函数会根据切片器的选择而动态更换分母,因而卡片M.装载量转换和M.装载量转换A中的值会根据外部上下文的环境进行动态匹配运算。当未做切片器选择时,则会对M.装载量的值除以1。

02、动态指标分析

创建表T出入库,表达式如下:

T出入库 = DATATABLE("分类",STRING,{
   
   {"入库量"},{"出库量"}})

返回的值如图5所示。

创建度量值M.出入库切换,表达式如下:

M.出入库切换 =
SWITCH (
    SELECTEDVALUE ( 'T出入库'[分类] ),
    "入库量", SUM ( DK[入库] ),
    "出库量", SUM ( DK[出库] )
)

在可视化区域,单击“切片器”,将T出入库表的分类拖入“字段”。单击“卡片图”,将度量值M.出入库切换放入“字段”。切片器选择及对应返回值如图9-36所示。

图片

■ 图6 依据度量值的切换显示不同的值(1)

如果将图9-36的“卡片图”换成“簇状柱形图”,可将DK表的产品拖入“轴”,将度量值M.出入库切换放入“值”。切片器选择及对应返回值如图7所示。

图片

■ 图7 依据度量值的切换显示不同的值(2)

03、动态图表标题

创建度量值M.,表达式如下:

M.包装选择 = SELECTEDVALUE(DK[包装方式])

在可视化区域,单击“切片器”,“字段”为M.包装选择。在可视化区域,单击“簇状柱形图”,“轴”为产品,“值”为M.入库量。在格式选项卡的格式栏,单击“常规”→“标题”→“文本”→fx;在“标题文本-标题”视窗中,选择“格式样式”为字段值,应用的字段为M.包装选择,单击“确定”按钮,如图8所示。

■ 图8  自定义视觉对象的颜色(1)

柱形图的颜色已自动配色,返回的值如图9所示。

■ 图9  自定义视觉对象的颜色(2) 

        

猜你喜欢

转载自blog.csdn.net/qq_41640218/article/details/133337793