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

news2025/1/19 16:31:35

在这里插入图片描述

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1674263.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

联想移动硬盘数据不见了?别急,分享4种实用恢复方法

在数字化时代,硬盘作为数据存储的核心设备,承载着大量的重要信息和文件。然而,有时我们可能会遭遇硬盘数据丢失的困境,特别是当这个问题发生在联想硬盘上时,更是让人倍感焦虑。本文将深入探讨联想硬盘数据丢失的可能原…

【热门话题】Vue.js:现代前端开发的轻量级框架之旅

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 Vue.js:现代前端开发的轻量级框架之旅一、Vue.js概览1.1 Vue.js的诞…

如何完美实现文件外发防泄漏,保护核心数据资产?

不管是大型企业,还是小型创业公司,不论企业规模大小,每天都会有大量的文件要进行内部传输协作和对外发送使用,数据的生产也是企业业务生产力的体现之一。因此文件外发防泄漏是企业信息安全中的一个重要议题,为了防止企…

关于‘==’与equals的区别

我写的也不清楚,有兴趣的可以看这位大佬的文章链接,说的很清楚 https://www.cnblogs.com/Latiny/p/8099581.html#!comments 与 equals 方法 判断两个变量是否相等有两种方式:一种是利用 运算符,另一种是利用equals方法。 注意…

YOLOv9全网最新改进系列::YOLOv9完美融合双卷积核(DualConv)来构建轻量级深度神经网络,目标检测模型有效涨点神器!!!

YOLOv9全网最新改进系列::YOLOv9完美融合双卷积核(DualConv)来构建轻量级深度神经网络,目标检测模型有效涨点神器!!! YOLOv9原文链接戳这里,原文全文翻译请关注B站Ai学术叫叫首er …

Flutter 依据JSON数据自动生成实体类

json自动化生成工具 点击这里可以跳转 页面是这样的 然后在左边输入你的json数据,它会自动生成对应的实体类 生成的实体类是如下: import package:json_annotation/json_annotation.dart; part merch_region.g.dart;JsonSerializable()class MerchReg…

Java面试八股之反射慢在哪里

Java反射慢在哪里 动态类型检查: 在反射过程中,Java需要在运行时确定类、方法、字段等的类型信息。这与编译时已经确定类型信息的常规对象访问不同,反射需要额外的类型查询和验证,增加了性能开销。 安全检查: 反射…

【流体模拟-01】如何模拟静态流(上)

文章目录 一、说明二、摘要三、简介四、稳定的纳维-斯托克斯4.1 基本方程4.2 解决方法 一、说明 关于流体物质的仿真和模拟,需要流体理论方面的一般知识。我们这里从基本流体方程入手,详细解释如何实现流体仿真的每一个具体步骤。 二、摘要 构建类似流体…

应急救灾北斗终端手机应用方案

在应对自然灾害和紧急救援的严峻挑战中,技术的力量从未如此重要。为了保障救援人员能够迅速、准确地响应灾情,提供及时有效的救助,顶坚应急救灾北斗终端手机应用应运而生。这款应用依托北斗卫星导航系统的高精度定位与通信功能,不…

企业OA办公系统开发笔记:2、MyBatis-Plus

文章目录 企业办公系统:2、MyBatis-Plus一、MyBatis-Plus1、简介2、主要特点3、依赖 二、MyBatis-Plus入门1、配置文件2、启动类3、实体类4、添加Mapper类5、测试Mapper接口6、CRUD测试6.1、insert添加6.1.1、示例6.1.2、主键策略 6.2、更新6.3、删除6.3.1、根据id删…

LoRA Land: 310个经微调的大语言模型可媲美GPT-4

摘要 低秩自适应 (LoRA) 已成为大语言模型 (LLM) 参数有效微调 (PEFT) 中最广泛采用的方法之一。LoRA 减少了可训练参数的数量和内存使用,同时达到了与全面微调相当的性能。该研究旨在评估在实际应用中训练和服务使用 LoRA 微调的 LLM 的可行性。首先,该研究测量了在 10 个基础…

学校为何更热衷于使用SOLIDWORKS教育版教学

在当今的教育环境中,SOLIDWORKS教育版因其独特的优势,越来越受到学校的青睐。为什么学校更热衷于使用SolidWorks教育版进行教学呢?本文将从以下几个方面进行阐述。 首先,SOLIDWORKS教育版为学生们提供了一个与实际工程应用紧密结…

java学习之zip炸弹攻击

一、概述 Zip炸弹是一种特殊类型的Zip文件,它包含了大量的无用数据。Zip文件格式允许使用压缩算法来减小文件的大小,但是如果Zip文件中的某些内容被重复压缩,就会导致文件大小急剧增加。Zip炸弹利用这个特性,将一些无用的数据多次…

vscode调试Electron+ts

调试Electronjs 调试Electronjs: https://www.electronjs.org/zh/docs/latest/tutorial/debugging-vscode 调试Electronts 首先看一下,我的目录结构。目录结构决定了launch.json中的路径部分。我将在项目根目录下进行调试,项目根目录下包含electron代码…

Windows Qt中支持heic 图片显示

安装vcpkg: git clone https://github.com/microsoft/vcpkg 执行脚本: .\vcpkg\bootstrap-vcpkg.bat 在安装之前如果需要指定vs的编译器, 在如下文件中做更改, 我指定的是用vs2019编译的: D:\vcpkg\vcpkg\triplets 增…

腐烂的橘子 - (LeetCode)

一、概述 994. 腐烂的橘子 - 力扣(LeetCode),今天刷到这道题,开始按照自己实现的思路写了一次,通过了调试,但是提交的时候,来了一个大的数据,就没有通过测试,百思不得其…

Redis-持久化操作-RDB

Redis持久化 由于Redis的数据都存放在内存中,如果没有配置持久化,Redis重启后数据就全丢失了,于是需要开启 Redis的持久化功能,将数据保存到磁盘上,当Redis重启后,可以从磁盘中恢复数据。 Redis提供了两个…

内联函数+auto关键字(C++11)+指针空指针nullptr(C++11)

内联函数auto关键字(C11)指针空指针nullptr(C11)详解 内联函数概念特性 auto关键字(C11)auto简介auto的使用细则auto不能推导的场景 基于范围的for循环(C11)范围for的语法范围for的使用条件 指针空指针null…

2024年 C++音视频开发学习路线(ffmpeg/rtsp/srs/webrtc/hls)

在音视频工作领域,很多人可能会陷入徘徊和迷茫的境地。音视频的知识纷繁复杂,自己学习非常困难,既需要非常扎实的基础知识,又需要有很多的工程经验;不知道如何学,怎样才能查漏补缺自己的技术短板。 对于音…

gpg从公钥服务器接收失败(gpg: keyserver receive failed: Server indicated a failure)

一、使用背景 apt update时发现错误,与签名相关。 于是添加签名(最后的签名编号换成自己的) apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 871920D1991BC93C但是这时候报错了,服务器连接不上 二、解决方案 …