【Power BI】DAX语言 VS Power Query M语言

在这里插入图片描述

DAX(Data Analysis Expressions)和Power Query M语言是Microsoft Power BI和Excel中的两种强大的数据处理和分析工具。尽管它们在许多方面都有重叠之处,特别是用于数据建模和数据转换,但它们在用途、语法和功能上有显著的区别。本文将详细探讨DAX和Power Query M语言的区别。

一、定义与用途

DAX

  • DAX(Data Analysis Expressions,数据分析表达式),是一个由函数和运算符构成的库,用于数据分析和计算。
  • DAX 公式包括函数、运算符和值,用于对表格数据模型中相关表和列中的数据执行高级计算和查询。这些函数和运算服务可进行组合,在 Excel 数据模型中的 Power BI、Analysis Services 和 Power Pivot 内生成公式和表达式。

Power Query M语言

  • Power Query M语言是一种数据查询语言,用于数据提取、转换和加载(ETL)。
  • Power Query 的核心功能是筛选和合并,即从支持的数据源的一个或多个丰富集合中混合数据。 任何此类数据混合将使用 Power Query M 公式语言来表示。 M语言在Power BI、Excel和其他Microsoft数据处理工具中用于数据的预处理和转换。它允许用户从各种数据源提取数据,并对其进行清洗和整理。

二、语法与表达方式

DAX

  • DAX的语法与Excel公式类似,但更为复杂和强大。它使用函数、运算符和特定的语法结构来进行数据操作。例如:
    Total Sales = SUM(Sales[SalesAmount])
    

Power Query M语言

  • M语言的语法类似于函数式编程语言,使用let表达式和查询步骤来定义数据转换流程。

  • M语言通过一系列的步骤来逐步转换数据,这些步骤通常用在Power Query编辑器中。例如,加载一个Excel文件并筛选数据:

    let
        Source = Excel.Workbook(File.Contents("C:\Data\SalesData.xlsx"), null, true),
        SalesData = Source{[Name="SalesData"]}[Data],
        FilteredRows = Table.SelectRows(SalesData, each [SalesAmount] > 1000)
    in
        FilteredRows
    

三、使用场景

DAX

  • 主要场景:用于数据模型中的计算和分析。例如,在Power BI报表中创建动态指标和自定义聚合。
  • 常见应用:几乎是Power BI中一定会使用到的,比如创建度量值(Measures)、计算列(Calculated Columns)、时间智能函数(Time Intelligence)、聚合计算等。
  • ![[DAX  VS Power Query M-20240514154214820.webp]]

Power Query M语言

  • 主要场景:用于数据加载和预处理。例如,从不同的数据源提取数据并进行清洗和整合,确保数据在加载到模型之前已经过处理和准备。
  • 常见应用:数据提取(ETL)、数据清洗、数据合并、数据转换等。大部分功能可以直接通过工具栏操作实现,基本不需要手写M语言。
  • ![[DAX  VS Power Query M-20240514154523450.webp]]

总的来说,DAX和Power Query M语言在Power BI和Excel中的角色是互补的。DAX主要用于数据建模中的计算和分析,而M语言则用于数据预处理和转换。理解这两者的区别和各自的优势,可以帮助用户更有效地处理和分析数据,从而在数据驱动的决策中获得更好的成果。

在实际应用中,对于Power BI而言,DAX是不可避免的学习部分,M语言大部分功能已经由工具栏按键替代,除非特殊复杂的操作,一般可以略过查看M语言代码;而在Excel中,普通的操作基本不会用到这两种语言,如果有使用的需求,也不能完全照搬Power BI的方法,在不同的环境中,哪怕是实现同样的功能,DAX 和M 语言还是可能会有细微差别。

数据分析表达式 (DAX) 引用 - DAX | Microsoft Learn
Power Query M 公式语言引用 - PowerQuery M | Microsoft Learn

相关推荐

  1. (c语言)goto语句

    2024-05-14 16:56:04       62 阅读
  2. Rust语言基础语法

    2024-05-14 16:56:04       60 阅读
  3. C语言makefile语法

    2024-05-14 16:56:04       34 阅读
  4. C语言逻辑语句

    2024-05-14 16:56:04       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-14 16:56:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-14 16:56:04       101 阅读
  3. 在Django里面运行非项目文件

    2024-05-14 16:56:04       82 阅读
  4. Python语言-面向对象

    2024-05-14 16:56:04       91 阅读

热门阅读

  1. Python实战开发及案例分析(21)—— 广度优先

    2024-05-14 16:56:04       32 阅读
  2. Python数独游戏

    2024-05-14 16:56:04       36 阅读
  3. 【Python系列-01学习路线-01基础】03变量

    2024-05-14 16:56:04       60 阅读
  4. yarn 命令(防止遗忘)

    2024-05-14 16:56:04       31 阅读
  5. 深入理解 MySQL 视图

    2024-05-14 16:56:04       33 阅读
  6. MySQL创建储存过程函数

    2024-05-14 16:56:04       33 阅读
  7. 空格探究 空格ASCII码值不一样

    2024-05-14 16:56:04       29 阅读
  8. 沪深300指数介绍

    2024-05-14 16:56:04       34 阅读
  9. 谁考了第k名C++

    2024-05-14 16:56:04       34 阅读
  10. XSS实战漏洞挖掘

    2024-05-14 16:56:04       33 阅读