美文网首页
3.6 将表用作标量值

3.6 将表用作标量值

作者: jweishan | 来源:发表于2020-02-26 23:44 被阅读0次

第3章 使用基本表函数

将表用作标量值

尽管VALUES是表函数,但由于DAX的特殊功能,我们经常使用它来计算标量值:具有单行和单列的表可以当作标量值使用。想象一下,我们产生了如图3-13所示的报告,报告了按类别和子类别划分的品牌数量。

图3-13 报告显示了每个类别和子类别可用的品牌数量

可能还需要在个数旁边查看品牌名称。一种可能的解决方案是使用VALUES检索不同的品牌,不是进行计数,而是返回它们的品牌名。只有在品牌只有一个值的特殊情况下,才有可能这样做。实际上,在这种情况下,可以返回VALUES的结果,而DAX会自动将其转换为标量值。为了确保只有一个品牌,需要使用IF语句保护代码:

 Brand Name :=
IF (
    COUNTROWS ( VALUES ( Product[Brand] ) ) = 1,
    VALUES ( Product[Brand] )
)

结果在图3-14中可见。当“品牌名称”列为空时,表示存在两个或更多不同的品牌。

图3-14 当VALUES返回单行时,我们可以将其用作标量值,就像在Brand Name度量值中一样

Brand Name 度量值使用 COUNTROWS 来检查 Products 表的 Color 列是否仅选择了一个值。因为此模式在DAX代码中经常使用,所以有一个更简单的函数可以检查列是否只有一个可见值:HASONEVALUE。以下是基于 HASONEVALUEBrand Name 度量值的更好实现:

Brand Name :=
IF (
    HASONEVALUE ( 'Product'[Brand] ),
    VALUES ( 'Product'[Brand] )
)

此外,为使开发人员的更轻松,DAX还提供了一种功能,该功能可自动检查列是否包含单个值,如果包含,则将其作为标量返回。如果有多个值,则还可以定义要返回的默认值。该函数为SELECTEDVALUE。先前的度量也可以定义为

Brand Name := SELECTEDVALUE ( 'Product'[Brand] )

通过包含第二个可选参数,可以提供一条消息,指出结果包含多个结果:

Brand Name := SELECTEDVALUE ( 'Product'[Brand], "Multiple brands" )

最新度量值的结果在图3-15中可见。

图3-15 如果Brand Name列有多行,则SELECTEDVALUE返回默认值

如果不是要列出 “Multiple brands”这样的信息,而是要列出所有品牌怎么办?在这种情况下,一种选择是迭代Product [Brand]的VALUES并使用CONCATENATEX函数,即使存在多个值,该函数也会产生良好的结果:

[Brand Name] :=
CONCATENATEX (
    VALUES ( 'Product'[Brand] ),
    'Product'[Brand],
    ", "
)

现在,结果包含用逗号分隔的不同品牌,而不是笼统的消息,如图3-16所示。

图3-16 *CONCATENATEX* 用连接表达式从表中构建字符串

相关文章

  • 3.6 将表用作标量值

    第3章 使用基本表函数 将表用作标量值 尽管VALUES是表函数,但由于DAX的特殊功能,我们经常使用它来计算标量...

  • 漫谈纬度表如何设计(一)

    一:什么是纬度 在数据仓库当中,纬度表和事实表是最常见的名词,事实表将度量值描述为事实,将纬度描述为度量值的环境,...

  • 如何将 Power BI 的度量值收纳到一个文件夹中?

    经常有人问我,是如何将度量值放到一个文件夹中的,因为平时建的度量值都是随机在某个表中,如果建的度量值很多,只是找这...

  • 度量值做筛选条件

    造一个给switch用的表 将筛选度量值放在被 筛选的视觉图形-列表,此度量值作为一个桥梁 countrows1和...

  • 腾腾的学习

    复习计划表 |[3.9][3.9]|[3.8][3.8]|[3.6][3.6]|3.4|2.28|2.23||[3...

  • 从一个例子来看Power Pivot中的关系及上下文

    销售表 客户表 模型关系 目标要求写出每个客户的平均折扣价的度量值 度量值书写 解释: 1. 求出客户对应折扣销...

  • 物理备份

    创建库,表,记录用作恢复

  • 度量值分组(划分字段)

    新建分组表,作为切片器 最重要的是在右侧筛选器上加上度量值作为筛选条件 若是单纯度量值限定返回值,不将度量值放进筛...

  • MySQL基础查询

    查询表全部 SELECT * from country; 查询常量值 SELECT 100;select 'joh...

  • 9.3.5 将实例用作属性

    使用代码模拟实物时,你可能会发现自己给类添加的细节越来越多:属性和方法清单以及文件都越来越长。在这种情况下,可能需...

网友评论

      本文标题:3.6 将表用作标量值

      本文链接:https://www.haomeiwen.com/subject/wzngchtx.html