DAX是什么

您所在的位置:网站首页 编程猫和极客星辰有何区别 DAX是什么

DAX是什么

2024-07-16 07:41| 来源: 网络整理| 查看: 265

DAX 全称 Data Analysis eXpressions,是面向 Microsoft Power BI、Microsoft SQL Server Analysis Services (SSAS)和 Microsoft Power Pivot for Excel 的编程式数据分析语言。它创建于 2010 年,随 Power Pivot 的第一个版本 PowerPivot for Excel 2010 一起发布。随着时间的推移,DAX 已经在商业智能和 Excel 社区中逐渐流行起来。

DAX 适用范围

DAX 的简单和复杂

微软在官方的介绍中称 DAX 是一种简单的语言。也就是说,DAX 的基本知识简单易学:你可以在几小时内开始使用。这确实是事实,微软在开发 DAX 的时候从 Excel 中移植了很多函数,它们名称相同,参数用法也类似。但我想告诉你的是,这种简单仅限于起步阶段。DAX 和大多数编程语言不同,它有很多独特且重要的理论,一旦涉及到这些概念,比如计值上下文、迭代和上下文转换,一切都将变得复杂起来。但不要放弃!请保持耐心。一旦你的大脑开始理解这些概念,你就会发现 DAX 确实是一种简单的语言,只是需要时间去适应。

学习 DAX 的误区

不同于其他语言,DAX 需要你理解它的原理之后才能熟练使用,如果你习惯于通过学习具体的函数建立起一门语言的知识体系(比如 Excel 函数),请千万不要将这种习惯带入到 DAX 的学习中。因为它的一些原理很难通过归纳法(从具体实例推导出普遍规律的一种方法)来理解。例如,对计值上下文(The Evaluation Context)的理解需要用到演绎推理:先接触理论本身,然后通过案例加深对理论的理解。我知道许多人不习惯这种学习方式,他们更喜欢在实践中学习,先研究如何解决具体问题,然后通过不断的练习和积累,归纳出公式背后的原理。如果你使用这种方式学习,会常常发现写出的公式能得出正确结果,但自己却不明白为什么。

DAX 的理论基石

以我的观察,有太多的学习者在这上面走了弯路,他们把之前学习其他语言的方法套用在 DAX 上,以为只要学会了函数也就掌握了这门语言。所以在这里我还想再强调一次,函数本身并不复杂,真正的复杂性蕴含于 DAX 公式的计值过程中,在简单的计算中你可以忽略它的存在,而一旦问题变得复杂,公式的计值流就会开始变得难以理解。

DAX 的优势

前文我们提到过,DAX 可以运行在 Power BI、SQL Server Analysis Services (SSAS)和 Power Pivot for Excel 中,本质上它们都是 SSAS 的表格模型,只是形式略有不同。Power Pivot for Excel 运行了一个 SSAS 表格模型的本地实例,而 Power BI 使用一个单独的进程运行一个特殊的表格模型实例。这是一个基于内存的列式数据库分析引擎。

DAX 引擎

DAX 的能力蕴含在 SSAS 表格模型的引擎,我们称之为 VertiPaq 引擎,这是它在开发阶段的工程名称,大家已经习惯用这个名称代替它的官方用名「xVelocity 内存分析引擎」。

Vertipaq 是基于内存的列式数据库引擎,模型的所有数据都驻留在内存中。在 Vertipaq 引擎内部,数据以列式存储,而传统的 SQL 数据库引擎通常使用行式存储。简单的说,行式存储适合进行事务处理(OLTP),比如增删改查。而列式存储则适合分析决策(OLAP),比如多维分析。

行式存储和列式存储  图片来源:网络

列式数据库有几个优点:

高效的压缩比 不靠索引来优化查询 更适合大量的数据 天生适合聚合运算

在这个基础上,基于内存的列式数据库还有比硬盘快 10 倍左右的数据读取速度,这也是为什么当今主流的 BI 工具和大数据分析工具全部采用内存式数据库的原因。所以 DAX 是非常适合计算的语言,我曾经在Excel Power Pivot 里测试过装载并分析一亿行数据,理论上完全没有问题。关于 DAX 引擎,后面会有专门的章节详细分析,这里我们只做最简单的介绍。

DAX 能分析多少数据

你已经了解了这颗引擎的强大之处,它绝不是吃素的,它带给你的一个直观感受就是数据处理能力的飞跃。

Excel 加载一亿行数据

Excel:将 Excel自身的数据处理能力提升到了前所未有的高度,复杂公式几千行数据就跑不动?vlookup 几万条就开始卡顿?不存在的,Power Pivot 让你可以轻松处理几百万乃至上千万的数据,即使一些复杂的计算逻辑,DAX 引擎也能在眨眼间完成计算。 Power BI Desktop:引擎版本比 Power Pivot 更高,性能也有所提升,不过这种提升不太容易被量化。一般来说,处理相同数据量级和复杂度的分析,比 Excel 表现要好。 SSAS:具备完整的 DAX 引擎,处理能力最强,可以参考下面这张表

SSAS 可以处理的数据量及建议

与其他 BI 工具相比,Power BI 的一大特点就是拥有自己的数据引擎和分析语言,靠的是微软在数据库领域深厚的积累,绝非一日之功。 动态计算的能力

除了能分析大量的数据,DAX 还可以根据计值环境(筛选上下文)的变化,自动重新计算。这是商业分析一项非常重要的能力,在解读数据报告的时候,我们需要基于业务特点不断的提出新的问题,并且这些问题需要立即得到回答,这样才能最大程度挖掘数据的价值,而不是像过去那样,分析师重新写 SQL,重新运行,然后所有人等待结果。

这也是 DAX 和 Excel 公式、VBA 或者 PQ 的一个最大的不同,这些语言都没法做到 DAX 一样的灵活性,它们必须重新编辑公式、再次点击运行然后等待结果产生,而DAX 可以默默帮你完成所有步骤。允许你以思维的速度展开分析。

这种动态计算的能力也是所有 BI 工具的标配,并非 Power BI 独有。值得一提的是很多分析语言,比如 SQL,Python,R 也可以实现类似的灵活性,比如 R 的 Shiny 可以动态计算。但需要做二次开发,不适合没有技术背景的普通业务人员,

DAX 可以根据环境的变化自动重新计算,但严格来说,它不是动态语言,后者编程语言中的一个专有名词:动态类型语言,是指数据类型的检查是在计算时进行的。用动态类型语言编程时,不用给变量指定数据类型,语言会在你第一次赋值给变量时,在内部记录数据类型 总结

「一身转战三千里,一剑可当百万师」,DAX 是一门强大的语言,它让没有任何 IT 背景的普通人借助 Excel 这样的平民工具就可以处理几百万、上千万行的数据;完备的函数体系允许你将复杂的业务逻辑抽象成一个个公式,根据外部筛选条件的变化,这些公式可以瞬间完成计算并返回结果。在过去,这种分析可能需要依赖 IT 长达几小时或数天的反馈才能完成。借助 DAX,普通业务人员对数据的分析能力将可以实现质的飞跃,还可以更容易的从 Excel 切换到 SSAS 这样的企业级 BI 工具。

DAX 不是一门轻易就可以掌握的语言,你需要学习它的理论,并通过做题来反复实践,在这个过程中你的认知会一次次的建立,又一次次被推翻,不要灰心,这是所有初学者的必经之路,你并不孤独。不要被眼前的挫折困扰,因为你的所有投入终将获得回报。

千里之行,始于足下,让我们从这里开始,一起进入这个全新的领域。

本文经「原本」原创认证,作者 PowerBI 极客,访问 yuanben.io 查询【4LBHVOE6】获取授权信息

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3