12月追加:欢迎加入知乎【微软BI技术圈】,一起讨论、分享包括PowerBI在内的一切BI话题!

简述

TREATAS()函数是DAX中用于表格间虚拟连接的函数,当遇到如下情况时,可以考虑使用TREATAS:
1.维度表或事实表之间没有可以单独关联的列;
2.出现多对多或其他无法使用直接的方法关联的情况
3.数据模型非常复杂时,通过建立虚拟关系以减少对表格之间物理连接的依赖

(根据Marco的说法:额外的物理关系可能会在过滤器传播到其他表时产生某种副作用)

过程

本案例数据是如下两张没有关联结构完全相同的销售表:

左边的是主表,右边的叫副表,很显然它们都没有唯一列,无法直接建立关联。假设我们希望使用副表的城市字段来筛选主表的利润,我们可以使用如下方法在主表新建度量值:

利润_Treatas =
CALCULATE(sum('Data'[利润]),TREATAS(VALUES(copy[城市]),'Data'[城市]))

结果如下(注意:下图城市这一字段来自和主表没有任何关联的副表):

但当我们增加副表的[客户ID]做筛选时,对应的数据却没有被正确计算,这是因为[客户ID]并没有利用Treatas和主表建立关联(但可以使用[地区]这一字段,因为它是[城市]的上层字段)

解决方法如下:

利润_Treatas =
CALCULATE(sum('Data'[利润]),TREATAS(SUMMARIZE('Copy','Copy'[城市],'Copy'[客户 ID]),'Data'[城市],Data[客户 ID]))

其他

Treatas()之所以可以实现虚拟连接,是因为它可以把本表指定列的筛选上下文属性传递至目标表,因而目标表可以获得对应的筛选能力(如本例,城市和客户ID字段的筛选上下文被传递至SUMMARIZE后的副表,因此副表的对应列可以筛选本表的指定值

[PowerBI]DAX虚拟连接函数:TREATAS()用法介绍相关推荐

  1. python中字符串函数的用法_python中字符串内置函数的用法介绍(代码)

    本篇文章给大家带来的内容是关于python中字符串内置函数的用法介绍(代码) ,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. capitalize() 首字母大写a='somewor ...

  2. C语言中fscanf()函数的用法介绍

    C语言中fscanf()函数的用法介绍 fscan()函数的原型: int fscanf(FILE *stream,const char *format,[argument...]); fscanf函 ...

  3. patindex函数的用法介绍

    /*关于patindex函数的用法介绍.编写人:Hopewell,日期:2006/08/26*/ patindex函数的用法. 语法格式:PATINDEX ( '%pattern%' , expres ...

  4. php error log 函数,php日志函数error_log如何使用 php日志函数error_log用法介绍

    php日志函数error_log如何使用?这篇文章主要介绍了php日志函数error_log用法,结合实例形式分析了php日志函数error_log相关的配置文件设置.函数功能.用法与使用注意事项,需 ...

  5. mysql+case_mysql内置函数case用法介绍

    本节内容: mysql内置函数case使用介绍 mysql对case函数的解释: 复制代码 代码示例: mysql> ? case Many help items for your reques ...

  6. 重点函数 | SELECTEDVALUE 用法介绍

    大家好,今天给大家分享一下SELECTEDVALUE函数的用法,先来看一下函数的说明: SELECTEDVALUE ( Table[column] )SELECTEDVALUE ( Table[col ...

  7. matlab中if语句的用法_Excel中最常用的逻辑函数IF用法介绍

    ​几日随风北海游,回从扬子大江头.臣心一片磁针石,不指南方不肯休.---[宋]文天祥<扬子江> IF函数在我们的实际工作中,用的是非常多的,相信大家对这个函数应该也不陌生,今日就给大家分享 ...

  8. matlab与geotiff影像的函数,用法介绍

    文章目录 前言 一.matlab和geotiff相关函数的学习 (1) pix2latlon() 和latlon2pix() (2) pix2map() 和 map2pix() (3) projfwd ...

  9. C++中assert函数的用法介绍

    assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义: #inclide<assert.h> void assert(int ...

最新文章

  1. python自带的shell是什么-python的shell是什么
  2. Employee Assign Organization unit
  3. Java普通代码块,构造代码块,静态代码块区别,执行顺序的代码实例
  4. CString 是一种很有用的数据类型
  5. word无所不能之在word中浏览网页看电影
  6. CentOS7网络快速解决
  7. 一文看懂推荐系统:排序11:Deep Cross Network(DCN)
  8. 大工14秋计算机英语3,【大工作业】秋季《大学英语3》在线测试2包100
  9. AriaNG保存服务器信息,AriaNg
  10. mac 访问局域网其他电脑上的虚拟机
  11. 阿里建站——通过阿里云平台搭建网站(阿里云+云市场+手动)
  12. TinyOS总体介绍
  13. Win10 日期/时间修改
  14. 动态测试与静态测试--手工测试和自动化测试
  15. 前端基础之CSS标签样式
  16. 磁链观测器结合霍尔传感器转子角度方案
  17. win7华硕电脑关闭触控板(亲测有效)
  18. libev 源码解析
  19. 湖南理工学院计算机老师信息,张登奇(计算机与信息工程系)老师 - 湖南理工学院 - 院校大全...
  20. js 遍历数组获取某些属性

热门文章

  1. OpenCV实践之路——opencv玩数独之一九宫格轮廓提取与透视变换
  2. Spring 注解 属性赋值与自动注入装配
  3. 腾讯新闻评论数据爬取
  4. LeetCode 1646. 获取生成数组中的最大值 Python
  5. 小波变换的matlab实现,维小波变换MATLAB实现
  6. C++ - CString 用法
  7. Delphi中的线程类Thread
  8. 握草!查询提升200倍,它难道想干掉传统数据库?
  9. 小波变换(wavelet transform)的通俗解释(一)
  10. windows 10中如何删除新加硬盘中系统分区和恢复分区