DAX:表值函数 VALUES、DISTINCT和FILTERS

表值函数 VALUES, DISTINCT 都用于返回一列的唯一值,唯一的区别是:VALUES()会额外添加一个BLANK。当使用VALUES函数从一个关联表中获取唯一值时,如果某一个值在关系中缺失,那么VALUES()函数会返回BLANK()。

当关系代表的约束无效时,数据模型会再关系的”一”端的任何表中自动创建一个空行,这就是空值的由来,也就是说,在一个1:M的关系中,如果”多”端在”一”端没有对应的值,那么数据模型默认把BLANK作为值来关联”多”端。

一,VALUES函数

当输入参数是列名时,返回一个包含来自指定列的唯一值的单列表,其重复值被删除,只返回唯一值。当输入参数输入参数是表名时,返回指定表中的行,其重复的行被保留。

注意:当在已过滤的上下文中使用 VALUES 函数时,VALUES 返回的唯一值会受到过滤器的影响。

例如,如果按地区过滤,并返回城市值的列表,则该列表将仅包括过滤器允许的地区中的那些城市。 要返回所有城市,无论现有过滤器如何,都必须使用 ALL 函数从表中删除过滤器。

二,DISTINCT函数

DISTINCT函数的结果受当前过滤器上下文的影响,返回一个包含指定列的唯一值的单列表。 换句话说,重复值被删除,只返回唯一值。

三,VALUES函数和DISTINCT函数的异同

相同之处,DISTINCT函数和VALUES函数的结果受当前过滤器上下文的影响。

在大多数情况下,当参数为列名时,VALUES 函数的结果与 DISTINCT 函数的结果相同,这两个函数都删除重复项并返回指定列的唯一值的列表。但是,存在一种特殊情况,如果从相关表中查找时,如果在一个表中缺少关系中引用的值,那么这会导致VALUES 函数返回的结果中被添加一个BLANK值,此空白值很有用。在数据库术语中,这被称为违反参照完整性。 当一个表正在更新而相关联的表没有更新时,可能会发生这种数据不匹配的情况。

DISTINCT函数可以消除循环依赖。

四,使用SELECTEDVALUE代替VALUES的情况

尽管VALUES函数是一个表值函数,但是由于DAX的一个特性,单行单例的表可以像标量一样使用,也可以使用VALUES来计算标量值,例如:

推荐使用SELECTEDVALUE函数,性能更高,代码更简单:

当 columnName 的上下文被过滤成一个值时,返回 TRUE,否则为假。

这个函数等价于:COUNTROWS(VALUES(

当 columnName 的上下文被过滤成一个值时,返回该值,否则返回alternateResult。

这个函数的结果等价于:

五,FILTERS函数

FILTERS函数返回被当前筛选上下文直接筛选的值,即过滤器直接应用到

跟VALUES函数的重要区别是:VALUES函数返回筛选上下文中的可见值,而FILTERS函数返回被筛选上下文直接筛选的值。

举个例子,报表上有一个Color切片器,直接筛选了Red,Green和Blue三种颜色,由于筛选上下文中还存在其他切片器,因此报表中可能只有Red和Green可见,也就是说,Blue被其他切片器过滤掉了。在这种情况下,VALUES函数只会返回Red和Green,而FILTERS函数会返回被直接筛选的所有Color,即Red,Green和Blue。

参考文档:

Original: https://www.cnblogs.com/ljhdo/p/14630106.html
Author: 悦光阴
Title: DAX:表值函数 VALUES、DISTINCT和FILTERS

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/552516/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • AJAX学习(1)

    基础确认:HTML、CSS、JavaScript AJAX可以: Ajax 的核心是 XMLHttpRequest 对象,用于和服务器交换数据。 xmlhttp.open(&quo…

    技术杂谈 2023年6月21日
    086
  • WINDOWS下JMETER压测端口占用问题

    2 压测环境配置 压测发起设备:windows 10网络:局域网压测软件:Jmeter 5.0压测系统内存:Ubuntu 4核8GPHP 版本:php7.1.23Nginx 版本:…

    技术杂谈 2023年5月31日
    087
  • [转]KubeSphere 虚拟化 KSV 安装体验

    Original: https://www.cnblogs.com/oxspirt/p/16422294.htmlAuthor: 立志做一个好的程序员Title: [转]KubeS…

    技术杂谈 2023年5月30日
    088
  • Python列表和元组知识点

    list.pop()方法:默认删除列表中最后一个元素,也可按照索引位置删除指定元素,并将删除的元素返回。 li = [23, 4, ‘ab’, True] print(li.pop…

    技术杂谈 2023年6月21日
    084
  • RocketMQ基本API使用

    RocketMQ基本API使用 基于原生客户端 <dependency> <groupid>org.apache.rocketmq</groupid&…

    技术杂谈 2023年7月25日
    085
  • Ubuntu安装python固定版本

    本篇文章使用python3.7安装步骤为例 1.直接使用apt-get安装python3.7 apt-get install python3.7该方法经常会出现 unable to…

    技术杂谈 2023年7月25日
    071
  • mysql @rownum := @rownum+1 方式获取行号

    MySQL: mysql中没有获取行号的函数,因此需要通过一些自定义语句来进行获取。通常做法是,通过定义用户变量@rownum来保存表中的数据。通过赋值语句@rownum:=@ro…

    技术杂谈 2023年7月25日
    066
  • 寒冬下的跑路与裁员…

    原创不易,求分享、求一键三连 Hi,各位亲爱的小伙伴,小钗公号遵循日复盘->周复盘->月复盘->季度复盘->年总结策略,所以某类型文章到后期才会成体系。 今…

    技术杂谈 2023年6月1日
    072
  • 视图

    视图1. 概念视图是一种虚拟存在的表,对于使用视图的用户来说基本上是透明的。视图并不在数据库中实际存在,行和列数据来自定义视图的查询总使用的表,并且是在使用视图时动态生成的。 视图…

    技术杂谈 2023年7月25日
    070
  • jd-gui反编译报错// INTERNAL ERROR //

    最近在反编译class和jar包的时候,发现部分class无法反编译出来,换了最新版本的jd-gui和多个版本都不行,只能放弃了 解决方案:GitHub上找Luyten这个工具反编…

    技术杂谈 2023年5月31日
    088
  • [转载]监控距离与镜头焦距和放大倍数之间关系

    在视频监控的实践中,我们经常会碰到这个问题:我想看清楚100米处的人,应该选用怎样的变焦镜头?选用多少倍变焦的球机?焦距多少才比较合适? 根据镜头透射的原理:f/D=h/H 其中:…

    技术杂谈 2023年5月30日
    0112
  • coroot-pg-agent 专注性能的pg promtheus exporter

    尽管已经有不少pg 的prometheus exporter 了,但是coroot-pg-agent 是关注与查询性能统计的还是很支持使用的pmm 也是支持pg 的,同时基于pro…

    技术杂谈 2023年5月30日
    097
  • 3D Math Keynote 3

    【 3D Math Keynote 3】 1、球的表面积 Surface、球的体积 Volumn: 2、当物体旋转后,如果通过变换后的旧AABB来顶点来计算新的AABB顶点,则生成…

    技术杂谈 2023年5月31日
    096
  • Ubuntu百度飞桨和CUDA的安装

    Ubuntu 百度飞桨 和 CUDA 的安装 1、简介 本文主要是 Ubuntu 百度飞桨 和 CUDA 的安装系统:Ubuntu 20.04百度飞桨:2.2 为例 2、百度飞桨安…

    技术杂谈 2023年7月24日
    073
  • 获取GeoScene Pro 90天免费试用版

    之前有写过 ,这篇文章是获取GeoScene Pro 90天免费试用版的步骤,目前能申请的最新试用版是Pro2.1。 打开网址 注册账户,此账户既是该网址的登录账号,也是登录Geo…

    技术杂谈 2023年5月31日
    090
  • 关于 QA 和自动化测试

    现在流行叫 QA,而不是测试。这是因为大家意识到:保证软件质量,仅仅靠编码完成后的测试是不够的,从需求分析、设计阶段开始就要严格把关。QA 的职责从之前的”编码完成后测…

    技术杂谈 2023年7月11日
    086
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球