首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Power Query: 转换表格数据(逆透视多层行标题)

需求:将一个具有多个标题行的数据集转换成表格格式(如下图所示)。这个数据集中不仅有两个标题行,而且还需要将April和May分配给下一行中的3列。...主要遵循的操作步骤如下: 将标题降级到数据中(如果需要)。 转置数据集。 根据需要向上/向下填充。 用分隔符合并原始标题。 转换数据,回到原始形式。...对于第一行仅显示分隔符的列,需要将它们替换成合适的列标题。 将第一行提升为标题。 在逆透视之前执行常规的数据清理操作。 逆透视列。 按上面使用的分隔符拆分属性列。 执行其他最终的数据清理操作。...参考资料: [1] 精通Power Query(https://item.jd.com/14270578.html)

51110
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Power Query清洗标题行错位的数据

    案例来源于一位同学的一种设备,去敏后格式如下:指标涉及100多个,每次测量的指标不一样,也就是说,设备除了“数据编号”外,其他标题名称错位存放于同一工作表中。...经Power Query处理后,结果如下: 处理的原理是:依据Power Query按照列名识别数据的特点,将每个数据编号分组,拆分为独立的表格,然后独立小表格提升标题后合并。实施过程如下。...将数据源导入Power Query后添加索引列,用于识别每个“数据编号”出现的位置。...Power Query的每一步操作生成的步骤可以看作一个表,不同的表之间可以相互调用。前面已经有了四个步骤对应四个表。现在的问题是,最后的步骤使得界面停留在仅剩标题的状态,数据被筛选掉了。...这两种方法都不好理解,最简单最容易理解的方法其实是直接在Excel界面中的数据源加一列: 分组编号确立后,使用分组依据功能将表格内容缩回: 添加自定义列删除每个表的分组编号(只保留数据源内容),

    1.2K20

    Excel Power Query里的月份排序问题

    小勤:像这种月份的排序问题怎么办? 大海:这种排序问题在Excel里面可以直接处理了,像这样: 小勤:那如果在Power Query里呢?...这些数据其实我是在PQ里做了很多其他处理的,最好能直接在PQ里实现。...大海:PQ里稍为麻烦一丢丢,在PQ里这样做: Step-01:复制月份列 Step-02:将复制出来的列更改为日期类型 Step-03:先后对产品和转换后的月份列排序 Step-04:排序后删掉复制出来的列就搞定了...小勤:嗯,这相当于做个辅助列来排序。...大海:对的,这些都是根据实际需要来操作。如果是临时的单一处理,用Excel就非常简单直接,如果是要综合其他内容处理并达到一键刷新,就用PQ。

    95230

    Power Query中Buffer的用法

    (一) 概念介绍 缓冲区(Buffer)就是在内存中预留指定大小的存储空间用来对I/O(输入/输出)的数据做临时存储,这部分预留的内存空间叫缓冲区。 使用缓冲区有两个好处: 减少实际物理读写次数。...缓冲区在创建时就被分配内存,这块内存区域一直被重用,可以减少动态分配和回收内存的次数,一般在实际过程中,我们一般是先将文件读入内存,再从内存写入到别的地方,这样在输入输出过程中我们都可以用缓存来提升IO...缓冲区的作用也是用来临时存储数据,可以理解为是I/O操作中数据的中转站。...缓冲区直接为通道(channel)服务,写入数据到通道或从通道读取数据,这样利用缓冲区数据来传递就可以达到对数据高效处理的目的。 (二) 函数数量 ? (三) 使用场景 ?

    1.4K10

    Power Query轻松搞定:数据透视时的多文本合并问题

    小勤:大海,能不能在数据透视的值里面实现多个文本的合并啊?比如下面这个,将评价合并在一起: 大海:当然可以啊,而且无论用Power Query还是Power Pivot,都可以轻松实现。...先说说Power Query的呗? 大海:好的,比如现在数据已经获取到了Power Query里: Step-1:透视列 小勤:聚合里用“计数”? 大海:别急嘛,咱们先用计数生成基础代码。...大海:这是在函数内调用函数时,如果需要传递参数时构造自定义函数的一种简略写法,相当于构造了一个匿名(反正用完就不用了,所以名字也不起了)的自定义函数: 没有名字的函数=(s)=>Text.Combine...(s,"、") 然后直接调用这个【没有名字的函数】 小勤:原来这样,我正在想如果要加其它参数怎么加呢,不过这样省写的方式,一下子感觉怪怪的。...改天再教我Power Pivot的实现方法啊。 大海:好。

    2.3K31

    Power Query中数据的定位

    Text.PositionOf("abcAaABCaA","a",2){1}=4 解释:正常返回全部"a"所在的位置,是一个列表{0,4,8},我们需要第2次则直接定位列表中的第2项,也就是{1}。...(五) 列表内定位 List.PositionOf 返回字符所处的列表中项的位置 List.PositionOfAny 返回任意批量字符所处列表项的位置 List.PositionOf(list as...Table.PositionOfAny用法和之前的雷同。 (七) 错行定位 1. 列表错行定位 根据列表的偏移位置加减计算来定位。 例: 在列表{1,2,3,4}中找到3之前的数字。...因为我们要从列表中挑选数据,格式是{列表}{项目的位置},所以2个都是列表格式,我们在之前计算出结果的基础上套上一层{}代表列表。{3-1}这个就是我们要找的项目的位置。...最后通过{列表}{3-1}也就是{1,2,3,1,2,1,2}{2}找到我们需要的值。 2. 表格错行定位 a.

    2.1K20

    如何利用Power Query实现错位行的标题提升?

    调整后表格 ? 也就是从第3列开始到第5列,我们需要把第一行的数据提升为标题行。 我们看下思路: 1.我们需要把表格转成列,然后在操作需要变动的列达到和正常列一样,随后在合并再一起组成新的表格即可。...我们先区分不需要处理的列和需要处理的列。通过List.Range来选择。 List.Range(Table.ToColumns(降级后的表),2,3) ?...List.Transform({0..2}, each List.Skip(需去除标题的列{_},1)) 这样就得到我们所需要的列表内容了。 ?...5.然后把不需要处理的列和处理完的列进行合并并转成表格,基本上就得到我们所需要的了,最后在做一次标题提升就可以了。...我们为了以后方便,可以把这个步骤做成自定义函数,这样就能直接在下次碰到的时候直接使用。 ? 其中错行是我们自定义的函数名称 我们看下函数说明 ? 如果觉得不错,请点赞转发下。

    2.9K11

    Power Query中避免出错的几种情况

    在Power Query中对于数据的类型要求比较严格,如果在中间步骤不是计算必要的数据类型,可以暂时不更改,而等到最后的时候在进行数据类型的更改,这样也能够更方便的发现问题的所在。 ?...不完整的数据中筛选 如果数据量很大,就会有可能产生未全部加载完成的数据,因为这里直接筛选的数据依据的只是前1000行,有可能展现出来的筛选数据并不完整。 ?...在此函数中,使用的列排序都是常量,而不是变量,如果只想让成绩这个字段根据所需要的位置进行插入,用变量的方式最好,只需要在列的名称上进行改变。...(九) 合并查询中的展开表 合并查询在Power Query中使用的比例还是相对挺高的,在使用后都会把匹配的数据给展开,这里就会涉及到一个注意事项,如图18所示,合并查询展开时的公式, ?...字母的大小写 在Power BI的模型关系中,不会区分大小写,如果只是大小写的区分,则会直接判断为多个关系,所以在Power Query中进行清洗的时候就要特别留意,以避免因为大小写产生的错误导致数据表之间的关系错误

    5.5K41

    如何理解Power Query中的“#”转义字符?

    我们在Power Query中有时候也会看到在公式中会有"#"字符存在,这个#字是什么意思呢? 我们今天来初步了解下这个#的功能。 在说这个之前,我们先来了解下什么是Unicode字符。...字符区间 16进制编码区间 0..9 0031-0039 A..Z 0041-005A a..z 0061-007A 一..龥 4E00-9FA5 在Power Query中,使用List生成列表,必须是升序的...(是根据Unicode编码进行的升序) 另外其中主要的3个符号类的,有自己的简称,我们记住简称即可。...例如我们需要日语的片假名,韩语字符,特殊的符号等都可以进行查找,查找到后就可以把对应的16位进制的编号记下,以后就可以方便转义了。...了解了Unicode编码,那我们看下,在Power Query中如何使用转义字符"#"进行转换。 例1:通过"#"直接进行16进制Unicode编码转义。

    3.2K10

    Power Query如何处理多列拆分后的组合?

    比较明显的是分级列,分隔符为全角字符下的逗号,而说明列则是换行符进行分列。2列分别是2种不同的分隔符进行的分割。如果直接在导入数据后对列进行分割会有什么样的效果呢?...但是这种分列效果肯定不是我们所希望,因为我们要的是组合对应的数据,所以得想办法先要进行组合,这里可以使用List.Zip进行组合,分列后的数据是列表格式,所以可以对2列数据分别进行分割后在进行组合,可以在添加列中使用如下代码...List.Zip ({ Text.Split([分级],","), Text.Split([说明],"#(lf)") }) 通过对文本进行拆分后并重新组合成新的列,然后展开列表得到图...4的结果,这时可以看到每组的数据已经是一一对应的了。...这样在提取数据后就能看到是对应的数据直接通过特殊分隔符合并成为单一的文本,如图7所示。 ? 最后再通过合并时的特殊分隔符进行分列即可得到所需要的数据格式,最后再更改下标题列名即可 ?

    2.5K20

    Power Query中批量处理列的函数详解

    ; 第2参数是需要改变的列及操作(正常情况是由列名和操作函数组成,也可以是空列表); 第3参是去除第2参数中指定后剩余的列所需要进行处理的函数; 第4参数是找不到第2参数指定的列标题时是忽略处理(1)还是返回错误处理...---- 例1: 此函数的必要参数只有2个,所以我们先用最基础的2个参数来进行操作。 ? 如果要把成绩统一减10分的话,那就在第2参数这里使用列名和对应的操作函数即可。...例3 第3个参数是一个函数,是在第2参数指定列以外表格中的所有列需要进行的操作。 在前面的操作中,成绩列和学科列都有了操作,那剩余其他列(姓名列)也需要进行操作,那就要使用到第3参数了。...如果第2参数的中的学科写错或者定义了其他未在操作表中的列名,则可以通过第4参数来控制返回。...因为指定的列里有 “班级”,但是在原来的表格中不存在,所以会产生错误,但是第4参数有指定1,也就是忽略错误,最终返回的结果如图所示。除了找到的成绩列表外,其余的列数据都在后面添加了个“A”。 ?

    2.6K21

    你知道Power Query中的sections命令吗?

    对于命令,有一个命令大部分学习Power Query的人都会了解,就是“#shared”,这个是为了显示所有的函数以及查询的命令。...那如果想单单显示PowerQuery中的自定义查询,该使用什么样的命令呢?Power Query中是否带有这样的命令呢? 有的,这个命令就是“#sections”,这个是什么命令呢?...返回一个记录格式,并且列出所有自定义的查询名称及内容的记录。 这个有什么用呢?有没有发现在很多函数中的参数需要选择,如图 ?...如果要用现有的查询作为参数,参数只需要设置as table这类的就可以,但是如果参数是一个text,则就不会显示查询中格式为text的查询了。此时用这个的话就非常方便了。...还可以用在自定义函数的函数参数上。 ? 这个自定义函数就是第一个列表中的数据作为变量x的下拉式列表框的参数。 如果觉得有帮助,那麻烦您进行转发,让更多的人能够提高自身的工作效率。

    1K00

    Power Query中的文本函数Text.StartMiddleRangeEndAtLength

    start_num 要替换为 new_text 的字符在 old_text 中的位置 。 num_chars 要替换的字符数。...但是这样做,还是有些问题: 第一、姓名这一列仍然存在,我如果要展示原始数据,截图会将姓名给暴露出来,而且这一列还不能删掉,因为删掉后带星号的姓名列也就没了; 第二、造成了重复列,我有简洁癖。...在使用上也有所不同: 具体说明,可以参考畅神的这篇文章:https://pqfans.com/194.html 重点说明的是,Text.Middle/Range的索引是从0开始的,这与DAX中的mid...text 中的相同位置插入文本值 newText 的结果。...结论 在Power Query中,因为可以使用if函数,很多判断性的问题就可以直接进行了,而不需要像DAX中那样,通过LEFT和RIGHT函数来变相地实现。

    2.5K10

    优化Power BI中的Power Query合并查询效率,Part 2:合并查询前or后删除多余的列有区别吗?

    中讲解了在Power BI中对两个表进行合并查询,数据集大小影响了效率。尤其是在进行合并查询之前删除了不需要的列,可以较大地提升合并查询的效率。...因此,我们可以得出结论: 在合并查询后紧接着删除不必要的列,和在合并查询的上一步进行删除不必要的列,没有任何区别。 what? why?为什么两个7列的表合并查询完再删除多余的列会表现得这么好?...答案是: 因为我们是在合并查询之后马上进行了删除多余列的操作,所以Power Query编辑器并不会真的将多余的列也进行合并查询,然后再删除这些多余的列。...关于以上这个Power Query的引擎计算原理在Ben Gribaudo的一系列文章中说的很清楚,可以参考文末的文档。.../2020/06/03/optimising-the-performance-of-power-query-merges-in-power-bi-part-2/

    3.3K10

    Power Query中错误值提醒的3种方式

    在Power Query中当出现错误时,会出现的错误提示的原因,如图。 ?...那有没有可能自定义这些提醒的内容呢?可以的,在Power Query中可以使用error语句,自定义错误时返回的提示内容,那具体怎么操作呢? 有3方式可以实现。 1....这里需要注意的是,记录中的3个字段名是固定的,对应error错误中的提示内容位置,其中Reason为必要内容。前面2个参数只能是文本格式,而最后一个Detail字段可以为文本格式,也可以为记录格式。...] then error Error.Record("运算错误", "格式错误", [方法1="去掉数字中的引号...这里的Error.Record函数里的3个参数分别代表了记录中的3个字段 如果觉得有帮助,那麻烦您进行转发,让更多的人能够提高自身的工作效率。

    2.8K40

    为什么Power Query中的筛选内容显示不全?

    小勤:为什么在PQ里筛选的老显示这个? 大海:当数据比较多的时候,就经常会这样显示。 小勤:有什么规律吗?...大海:据了解,PQ首先是检测表中的前1000行数据的不重复值来提供筛选选项的,当数据超过1000行时,就可能会显示“列表可能不完整”的提示。...大海:PQ的筛选器中只能容纳1000个供筛选的选项,当PQ检测数据的前1000行,发现全部都是不同的值时,就直接显示1000行,然后告诉你达到了上限。 小勤:那这种情况下怎么筛选啊?...这是PQ的限制,在微软的官方网站上有明确的说明(更多内容可参考以下链接:https://support.office.com/en-us/article/Power-Query-specifications-and-limits...大海:对的。

    4.3K20
    领券