【Power BI】使用 Power BI 处理结构化复杂表单数据 | 文末送书

news2024/11/22 14:02:46

在这里插入图片描述

文章目录

    • 前言
    • 使用 Power BI 处理结构化复杂表单数据
      • 案例一、处理标题与内容同行的数据表
      • 案例二、处理标题与内容同单元格的数据表
    • 文末总结
    • Power BI 新书推荐

前言

数据处理是数据分析的奠基石,只有使用处理干净的数据,分析才会产生价值。简单而言,数据处理的终极目的是将非结构化数据转换为结构化数据。虽然数据处理自身未必直接产生数据价值,但其过程往往相当耗时,因此如果无法高效完成数据整理任务,必将影响最终的数据分析进程。通过本文内容的学习能帮助大家进一步提高数据整理的能力和效率,达到事半功倍的效果。无论你在使用 Excel 或 Power BI,都可以用本文讲解的技巧。

使用 Power BI 处理结构化复杂表单数据

如何对标题与内容同行的表进行结构化处理?
如果对标题与内容同单元格的表处理?

在日常业务中经常遇到类似图1这种非结构化的数据报表,经过数据处理后,非结构化表将被转换为图2的结构化数据表。

本文将介绍两种常用的表单处理方法。

在这里插入图片描述
(图1,非结构化的原始数据表)

在这里插入图片描述
(图2,经过结构化处理的数据表)

案例一、处理标题与内容同行的数据表

以【文件夹】类型获取两个示例文件,再用Excel.Workbook函数提取表内容,为了行文方便,我们可以右击展开应用的步骤,选择【重命名】选项简化名称(此处改为GET),见图3。

在这里插入图片描述
(图3,获取的非结构原始数据)

展示一个示例以方便读者理解,单击fx图标添加一个新步骤,然后添加以下M函数公式,代码的作用是获取GET步骤中的[Data]列数据,{0}代表第一个表,{Column2}{1}对应企业名字内容所在之处,见图4。

在这里插入图片描述
(图4,直接通过M函数获取对应的单元格信息)

#table({"企业名称"},{{#"GET"[Data]{0}[Column2]{1}}})

通过以上方法,便可按规律获取其他相对应字段信息,删除GET之后的步骤,点击【自定义列】选项并添加以下完整的M代码,代码中的 [Data]是对上一步中的相关列引用,用户可在快照中观察提取的数据内容,见图5。

#table(
{"企业名称","培训项目","培训日期","联系人","培训费用","电话","邮箱"},
{{
[Data][Column2]{1},[Data][Column4]{1},[Data][Column6]{1},[Data][Column2]{2},
[Data][Column4]{2},[Data][Column6]{2},[Data][Column2]{3}
}})

在这里插入图片描述
(图5,添加自定义列中的M公式)

生成自定义列后,我们便可以删除【Data】列,并将【自定义】列展开,见图 6。最终的结果见图 2。

在这里插入图片描述
(图6,查看自定义列中的Table结构数据)

案例二、处理标题与内容同单元格的数据表

另外一种典型的非结构化表结构是标题与内容处于同一单元格中。 在图7中,行2和行3为合并单元格,本例介绍将员工数据进行结构化处理,见图8。解题思路是将表头与表身进行分别的处理,然后将它们合并。

在这里插入图片描述

(图7,非结构化的原始数据)

在这里插入图片描述

(图8,处理完成的结构化数据表)

与前面示例相似,我们以【文件夹】类型获取两个示例文件,这里的唯一特殊地方是我们会保持工作簿【Name】字段作为后边的合并之用,见图9。

在这里插入图片描述

(图9,通过文件夹形式读取数据后并提取其中的 Table)

此处会把原来的表改名为【Body】,并进行复制并改名为【Headers】,见图10(读者可自行改名)。

在这里插入图片描述

(图10,复制该查询)

继续处理【Body】查询,为其添加【自定义列】并添加以下M函数公式,处理结果快照见图11。

在这里插入图片描述

(图11,添加自定义列获取Table中的结构化数据)
Table.RemoveLastN(Table.PromoteHeaders(Table.Skip([Data],3) )  ,1)
/*自定义列其实是有3个M函数的嵌套组合而成,最内侧Table.Skip表示将表头进行剔除、中间层的第2个Table.PromoteHeaders表示将表头提升、最外围的Table.RemoveLastN是去除第7行的冗余信息.*/ 

将自定义列展开并且保留始终保留【Name】字段,见图12。至此,已经完成了表身的数据处理。

在这里插入图片描述

(图12,完成表身的结构化数据处理)

接下来我们要处理表头的数据,返回前面复制的【Headers】并选中该查询,为其添加【自定义列】,并添加以下M函数公式,见图13。

在这里插入图片描述

(图13,进行表头的结构化数据处理)
Table.Range([Data],1,2)
// 这段代码是提取Excel行2与行3的员工信息

提取完成后,展开【自定义列】,提取原表头的员工信息、职位、员工号码等信息,参考图 14仅保留相关列。

在这里插入图片描述

(图14,进行拆分为行操作)

将【Column1】中所有的空值进行筛选后去除,然后进行【按分隔符拆分列】操作,分隔符为【冒号】,这样便将表头信息描述和具体信息名称拆分为两列了,见图 15。

在这里插入图片描述

(图15,进行拆分为列操作)

选中【Column1.1】,并对其进行透视操作,【聚合值函数】为【不要聚合】方式,单击【确定】按钮,结果见图 16。至此,完成了对表头的数据处理。

在这里插入图片描述

(图16,进行透视列操作)

依据【Name】字段,对两个表进行合并操作,在菜单中选择【合并查询】-【将查询合并为新查询】选项,见图17

在这里插入图片描述

(图17,将表头与表身进行合并查询操作)

在【合并】对话框中分别选中【Body】和【Headers】中的【Name】字段,然后使用【左外部】联接种类,点击【确定】按钮,见图 18。

在这里插入图片描述

(图18,对二表进行左外部合并操作)

在这里插入图片描述

(图19,合并完后的数据表结构)

文末总结

在本文中,我们深入探讨了如何使用 Power BI 处理结构化复杂表单数据的方法。通过仔细分析和实际操作,我们学会了如何有效地处理标题与内容同行以及同单元格的数据表格。这些技术和方法对于从各种来源收集和整理数据都具有重要意义。通过充分利用 Power BI 提供的强大功能,我们可以更加灵活地处理数据,从而为业务决策提供更准确、可靠的支持。无论是处理大规模数据集还是解决复杂的数据结构,本文介绍的技巧都将帮助读者更好地应对数据处理的挑战。希望本文所提供的见解能够在实际应用中发挥积极作用,提升数据处理和分析的效率与质量。

Power BI 新书推荐

本文会抽出两位粉丝送出下面的 Power BI 好书

《征服Power BI:提升办公数字化能力的45个实战技巧》是一本关于 Power BI 进阶知识的实战类图书,将 Power BI 的主要功能融入45个高级应用技巧中,每个技巧都以解决实际商业分析或商业分析 BI 方案为导向。

官方购买链接:https://item.jd.com/13984280.html

在这里插入图片描述

本书将 Power BI 功能分为六大知识模块:数据处理模块介绍了将非结构化数据转换为结构化数据的相关方法;DAX 模型分析模块介绍了定义数据表之间的关系、创建度量和计算列,以及 DAX 建模等核心知识;可视化应用模块按类介绍了可视化对象个体,以及整体提升报表效果的方法;数据发布与共享模块介绍了分享数据流、数据集、数据市场,创建和管理指标、管道,创建多语言和视角等数据分享功能;Power Platform 与 Microsoft 365 集成模块介绍了 Power BI 与其他工具结合的应用案例;企业应用模块介绍了与 Power BI 报表开发相关的功能。

在这里插入图片描述

[ 本文作者 ]   bluetata
[ 原文链接 ]   https://bluetata.blog.csdn.net/article/details/132258964
[ 最后更新 ]   08/13/2023 16:00
[ 版权声明 ]   如果您在非 CSDN 网站内看到这一行,
说明网络爬虫可能在本人还没有完整发布的时候就抓走了我的文章,
可能导致内容不完整,请去上述的原文链接查看原文。

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

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

相关文章

Nacos AP架构集群搭建(Windows)

手写SpringCloud项目地址,求个star github:https://github.com/huangjianguo2000/spring-cloud-lightweight gitee:https://gitee.com/huangjianguo2000/spring-cloud-lightweigh 目录: 一:初始化MySQL 二:复制粘贴三份Nacos文…

【设计模式】拦截过滤器模式

拦截过滤器模式(Intercepting Filter Pattern)用于对应用程序的请求或响应做一些预处理/后处理。定义过滤器,并在把请求传给实际目标应用程序之前应用在请求上。过滤器可以做认证/授权/记录日志,或者跟踪请求,然后把请…

Docker启动相关的命令

1.Docker服务相关命令 操作daemon CentOS7版本启动docker systemctl start docker systemctl status docker停掉docker服务: systemctl stop docker重启命令 systemctl restart docker开机自启docker systemctl enable docker2.小结

8.13黄金是否进入下行通道?下周开盘如何布局

近期有哪些消息面影响黄金走势?黄金多空该如何研判? ​黄金消息面解析:周五(8月11日)现货黄金小幅收低,受累于美元走强和美国国债收益率上升,本周录得6月底以来最差单周表现。投资者在评估最新一批通胀报告和消费者信…

欧拉公式之证明

首先,我们考虑复数函数的泰勒级数展开式。对于任意一个复数函数f(z),我们可以将其在za处进行泰勒级数展开: f(z) f(a) f(a)(z-a) f(a)(z-a)^2/2! f(a)(z-a)^3/3! ... 其中f(a)表示f(z)在za处的导数,f(a)表示f(z)在…

Docker查看、创建、进入容器相关的命令

1.查看、创建、进入容器的指令 用-it指令创建出来的容器,创建完成之后会立马进入容器。退出之后立马关闭容器。 docker run -it --namec1 centos:7 /bin/bash退出容器: exit查看现在正在运行的容器命令: docker ps查看历史容器&#xff0…

【前端】求职必备知识点4-CSS:flex、隐藏元素(7种方法)、单位

文章目录 flex隐藏元素(7种方法)不占位置占位置 单位思维导图 flex 【前端】CSS3弹性布局(flex)、媒体查询实现响应式布局和自适应布局_css媒体查询 自适应_karshey的博客-CSDN博客 flex缩写: flex-grow 和 flex-shr…

聚类与回归

聚类 聚类属于非监督式学习(无监督学习),往往不知道因变量。 通过观察学习,将数据分割成多个簇。 回归 回归属于监督式学习(有监督学习),知道因变量。 通过有标签样本的学习分类器 聚类和…

vs使用def导出文件简介

vs使用def导出文件简介 1.首先需要创建一个dll项目,否则没地方配置使用def文件的指向 2.定义一系列函数并创建一个def文件 3.配置使用def文件的指向编译即可 配置到导出格式时候可以通过NONANE选项使到处函数的符号名字为空,X为导出的序号&#xff0c…

SQL-每日一题【1378. 使用唯一标识码替换员工ID】

题目 Employees 表: EmployeeUNI 表: 展示每位用户的 唯一标识码(unique ID );如果某位员工没有唯一标识码,使用 null 填充即可。 你可以以 任意 顺序返回结果表。 返回结果的格式如下例所示。 示例 1&a…

04 - 分离头指针情况、理解HEAD和branch

查看所有文章链接:(更新中)GIT常用场景- 目录 文章目录 1. 分离头指针2. HEAD和branch2.1 branch的一些操作2.2 HEAD 1. 分离头指针 分离头指针detached HEAD是一种HEAD指针指向了某一个具体的 commit id,而不是分支的情况。 切换…

D. Andrey and Escape from Capygrad Round 892 (Div. 2) 1859D

Problem - D - Codeforces 题目大意:在一个从0到1e9的数轴上,有n个传送门,每个传送门有4个参数,l,r,a,b,可以从[l,r]之间的任意内进入传送门,并传送到[a,b]之间的任意位置,[l,r]一定包含[a,b]&…

使用Python解析通达信本地lday数据结构

通达信软件中的vipdoc是一个存储股票行情数据的文件夹。在通达信软件的安装目录下,可以找到一个名为vipdoc的文件夹,里面存放着各个股票的分时、日线、周线、月线等行情数据文件。这些数据文件可以用于自定义分析和回测股票的走势和交易策略,…

第 358 场LeetCode周赛题解

A 数组中的最大数对和 数据范围小&#xff0c;直接暴力枚举数对 class Solution { public:int mx(int x) {//返回10进制表示的数的最大数字int res 0;for (; x; x / 10)res max(res, x % 10);return res;}int maxSum(vector<int> &nums) {int n nums.size();int r…

LVS简介及LVS-DR搭建

目录 一. LVS简介&#xff1a; 1.简介 2. LVS工作模式&#xff1a; 3. LVS调度算法&#xff1a; 4. LVS-DR集群介绍&#xff1a; 二.LVS-DR搭建 1.RS配置 1&#xff09;两台RS&#xff0c;需要下载好httpd软件并准备好配置文件 2&#xff09;添加虚拟IP&#xff08;vip&…

使用GUI Guider工具开发嵌入式GUI应用 (2) - 在MCU上部署源码

使用GUI Guider工具开发嵌入式GUI应用 (2) - 在MCU上部署源码 文章目录 使用GUI Guider工具开发嵌入式GUI应用 (2) - 在MCU上部署源码引言创建LVGL基本MCU工程获取移植LVGL的源码工程通过bootloader使用外扩qspiflash存储大尺寸固件程序 创建LVGL应用源码在GUI Guider中创建新项…

【MySQL】Java实现JDBC编程

文章目录 1. JDBC2. 添加驱动包3. 编程3.1 创建数据源3.2 与数据库建立连接3.3 构造SQL语句3.4 执行SQL语句3.5 释放资源&#xff0c;关闭连接 1. JDBC 数据库编程必须掌握至少一门编程语言&#xff0c;一种数据库&#xff0c;会导入数据库驱动包。 操作和连接不同数据库都需要…

jquery发送ajax练习

jquery发送ajax练习 工具代码运行结果 工具 HBuilder X 代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>通过ajax进行图片的提取和显示</title><style>div{background-color: beige;color: red;font-s…

Linux与bash(基础内容一)

一、常见的linux命令&#xff1a; 1、文件&#xff1a; &#xff08;1&#xff09;常见的文件命令&#xff1a; &#xff08;2&#xff09;文件属性&#xff1a; &#xff08;3&#xff09;修改文件属性&#xff1a; 查看文件的属性&#xff1a; ls -l 查看文件的属性 ls …

一篇文章带你了解Java发送邮件:使用JavaMail API发送电子邮件的注意事项、发送附件等

Java发送邮件&#xff1a;使用JavaMail API发送电子邮件 作者&#xff1a;Stevedash 发表于&#xff1a;2023年8月13日 15点48分 来源&#xff1a;Java 发送邮件 | 菜鸟教程 (runoob.com) 电子邮件在现代通信中扮演着至关重要的角色&#xff0c;而在Java编程中&#xff0c;…