POWER BI之DAX与SQL区别
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,前言:这篇文章对于具有一点SQL查询基础人会十分容易理解,譬如:掌握SELECT,SUM,GROUP BY等。注:此文不涉及到Filter Context(筛选上下文)的介绍。正文:对于对SQL有一定
千家信息网最后更新 2026年10月31日POWER BI之DAX与SQL区别
前言:
这篇文章对于具有一点SQL查询基础人会十分容易理解,譬如:掌握SELECT,SUM,GROUP BY等。
注:此文不涉及到Filter Context(筛选上下文)的介绍。
正文:
对于对SQL有一定了解的人来说,咋看DAX,怎么都不习惯。 但是,如果理解以下几个后,DAX学起来就得心应手一些。
SUMMARIZE
FILTER
CALCULATE 与 CALTULATETABLE
注:这里不会对这些语法详细的讲解,而是从SQL的角度,看看那些DAX的等价相似语句。
先来看一个例子,
查询Products表里的所有行:
表 ='tblProduct'SELECT *FROM tblProduct [object Object]
DAX Filter vs SQL Filter
DAX:
FILTER ( Product, RELATED ( Category[Product Category Name] ) = "Bike")
SQL:
SELECT * FROM Product PJOIN Category c on P.[Category_KEY] = c.[Category_KEY]WHERE c.[Product Category Name] = 'Bikes'FILTER是一个MUST know的语句
从Transaction表中统计销售数目 - SUM-GRUOP BY:
DAX
-- 显示每个产品销售数目SUMMARIZE ('Transaction','Transaction'[ProductId],"Total qty", SUM ( 'Transaction'[Quantity] ))-- 显示每个产品销售数目
(Quantity) ProductId
SUMMERIZE
选择一个表中指定的列:
dax
SUMMARIZE(Product,Product[Name],Product[Size])
SELECT Name,SizeFROM tblProduct选择前几行:TOPN ( 5, Product, Product[FullPrice] )TOP3 = TOPN(3,SUMMARIZE('订单表','订单表'[create_time],"Sale Amount",sum('订单表'[amount])),[Sale Amount]) //返回表的值,需要添加表select * from Product LIMIT 5SUMMARIZE是一个比较重要语句:
记住:这个跟SQL极为相似,学习过程中只要想想SQL就容易理解很多了。
SUMMARIZE( 源表名, Group by 列 1, ..., Group by 列 N, 汇总列名1, 汇总列名1所对应的表达式, ..., 汇总列名N, 汇总列名N所对应的表达式 )
再来一个例子:
对产品的分类,颜色,产品名字进行统计:交易单量,销售数目
MSDN的例子
DAX:
SUMMARIZE('Internet Sales' , ROLLUP('Date'[Calendar Year], 'Product Category'[Product Category Name]) , "Sales Amount", SUM('Internet Sales'[Sales Amount]) , "Discount Amount", SUM('Internet Sales'[Discount Amount]) )SELECT D.[Calendar Year], PC.[Product Category Name] , SUM(F.[Sales Amount]) 'Sales Amount' , SUM(F.[Discount Amount]) 'Discount Amount'FROM [Internet Sales] FJOIN DATE D ON S.[DAY_KEY] = F.[DAY_KEY]JOIN [Product Category] PC ON PC.[Category_KEY] = F.[Category_KEY]GROUP BY D.[Calendar Year],PC.[Product Category Name]等价的SQL如下,如果你只看浅蓝色的部分,是不是很好理解呢?
SUMMARIZE还有其他的Option,这里就不做详细介绍。
SUMMARIZE详情参考:https://msdn.microsoft.com/en-us/library/gg492171.aspx
CALCULATETABLE vs Sub Query
下面语句统计Bike这个类别的产品的销售数目。
SUMMARIZE ( CALCULATETABLE ('Internet Sales', 'Product Category'[Product Category Name] = "Bikes" ), -- field to group by Product[Product Name],"Quantity sold",SUM( 'Internet Sales'[Order Quantity] ))SELECT P.[Product Name], SUM(Fact.[Quantity]) as 'Quantity sold'FROM (SELECT F.* FROM [Transaction] F JOIN Category c ON F.[Category_Key] = C.[Category_Key] WHERE C.[Product Category Name] = 'Bikes' ) Fact join Product P ON P.[Product_Key] = Fact.[Product_Key]GROUP BY P.[Product Name]上述的SQL语句有很多种写法。高亮部分CalculateTable里面筛选了Bikes这个类别,正如SQL的sub Query一样。
小结:
DAX语法十分灵活,有些看起来晦涩难懂,但是,如果能够以SQL为基础的角度去切入会事半功倍。
还有,此文没有介绍的上下文(Filter Context)是一个重要的概念,如果要真正掌握DAX和一些高级的用法,深刻理解上下文是必须的。
产品
数目
语句
F.
销售
P.
上下
上下文
例子
订单
相似
重要
产品销售
基础
等价
类别
表达式
角度
语法
部分
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
苏州找大状互联网科技有限公司
互联网科技官网
科技创新与互联网经济
圆梦互联网科技
互联网 的科技创新
世界互联网领先科技成果
朗涯互联网科技
万达互联网科技
兼蜜互联网科技
湖南洣水互联网科技有限公司扣款
移动互联网科技股
阿里互联网科技公司
中国航天科技大学国际工业互联网
西安小鹰速贷互联网科技有限公司
2021互联网科技公司排名
深圳互联网科技的发展
信承诺互联网科技有限公司
福建互联网展示科技馆设计
中国科技和美国互联网
盐城市攀科互联网科技有限公司
博彦科技互联网金融
中国 科技 互联网
奔汉互联网科技
四个字互联网科技公司取名
互联网科技公司的市场部门
宝灵互联网科技有限公司
互联网公司黑科技创始人
长沙茂晟互联网科技有限公司
工业互联网科技创业
利用互联网等科技手段