之前在群里看到一个案例,是关于蛇形整理的,这里想分享下自己的解题思路。 原数据: ? 目标表: ? (一) 分析数据: ? 数据源是由固定数据和内容数据组合而成。...首先拆分固定的内容和数据内容 Table.FirstN(更改的类型, 4) //固定内容 ? Table.Skip(更改的类型,4) //数据内容 ?...每2行组合一组数据 通过添加索引列的方式,并进行整除2,最后通过分组进行组合。 ? 这里直接把表中的索引列给去了,只保留单个数据组的数据。 3. 处理明细数据组中的内容 ?...通过逆透视全部列并转置就能达到多行多列数据全部转换成多列单行的数据。 ? 处理完的数据直接展开即可,因为标题列名称都一样,所以会自动进行组合合并。 4....批量更改数据内容列的标题 这里可以使用Table.FromColumns和Table.ToColumns函数的组合进行批量标题的更改。
样例表格: 之前讲了从表头获取,那对应的就有从表尾获取。 (一)从表尾开始提取 1....获取表的最后一条记录 Table.Last(table as table, optionaldefault as any)as any 第1参数是需要操作的表;第2参数是在空表的情况下的赋值;返回的结果如果是非空表则是最后一条记录...Table.FromRecords({})生成的是一个空表,例如Table.FromList({}),Table.FromColumns({}),Table.FromRows({})也是一样的,生成的是不具备标题字段的空表...Table.LastN(数据, each Text.Contains([姓名],"五"))= 解释:查找姓名包含"五"的记录,并返回形成表格。...因为第一条记录是的姓名是王五,满足条件,第二条记录是李四不满足条件结束,所以只返回最后一条记录并形成表格。
;第2参数为是否指定列查找,是一个列表格式,默认是不指定列;返回的结果是表格式。...;第2参数是需要偏移的行,从0开始,不偏移为0,是数字格式;第3参数是需要返回的行数,是数字格式,默认是返回偏移后的全部行;返回的也是表格格式。...例: Table.Range(源,0,2)= Table.Range(源,1)= Table.Range(源,2,10)= 解释:偏移2行往后取10行,此函数不存在参数超标的情况,所以如果取的行数超过了表格的行数...按文本匹配后提取 Table.FindText(table as table,text as text)as table 第1参数是需要操作的表;第2参数为需要查找的文本;返回的也是一个表格式。...例: Table.FindText(源,"数")= 解释:返回姓名,成绩,学科字段所有含"数"的行。因为此数据源相对简单,所以返回了学科中数学包含"数",所以返回这一行。
返回生成的也是表格式。 例: Table.RemoveRowsWithErrors(源)= ? 解释:删除表中所有的错误行。...解释:从表中偏移2行后再删除1行,也就是删除的是原表的第3行。 3....第1个参数是需要操作的表;第2参数是行的列表,可以理解为记录的条件列表;第3参数和第2参数的比较,可以理解为列匹配,通常指的是字段名匹配。 例: ?...解释:删除所有成绩为90的记录并生成一个新表。源代表的是步骤名称,表示在当前查询中进行的操作,因为是记录所以有明确的记录值。记录是没有筛选的,所以只有绝对的引用值。...解释:原本条件是删除所有成绩为90,学科="英语"并且姓名="张三"的记录,但是第3参数的匹配只有姓名,所以只匹配姓名的条件。也就是只操作删除姓名="张三"的记录的动作。
样例表格: (一)提取表标题 Table.ColumnNames(table as table) as list 从指定表中生成一个标题列表,只有为一个参数表格式,返回的是一个列表格式。...例: Table.ColumnCount(数据)=3 解释:这3代表标题字段的数字,一共3个。代表姓名,成绩,学科这3个字段数。...Table.ColumnCount(源)=3 解释:这个是在原表中进行的查询,表的引用使用的是步骤名称。...(三)提取表记录数 Table.RowCount(table as table) as number 提取表中的记录数,也就类似于行数,返回的是一个数字格式。...例: Table.RowCount(数据)=3 Table.RowCount(源)=3 解释:这里的3代表在原查询表里找到3条记录数,这个3可以理解为代表图中最左侧的1,2,3,取最大一个值。
如果是数字则代表直接从顶部开始跳过指定行数,0的话代表不跳过,如果是条件,则从头开始跳过满足条件的行直到不满足条件为止;返回的是表格形式。...随后用拆分后的这个列表去和另外一个含有关键词的列表去比较,List.ContainsAny代表的是任何匹配,也就是姓名拆分后的列表1和关键词的列表2只要有同一个关键词则作为成立的条件进行提取。...Table.SelectRows(源, each List.Contains({"张三","张四","李四"},[姓名]))= 解释:这次把条件倒过来了,通过一个姓名列表去筛选源表中符合条件的数据。...第3参数代表如果需要返回的列不存在需要怎么样的操作(出错0或者空1,空值2),默认0出错;返回的也是一个表格形式。...Table.SelectColumns(源, List.FindText(Table.ColumnNames(源),"成"))= 解释:返回本表中包含“成”的字段。
样例表格: (一)从表头开始提取 1....获取表的第一条记录 Table.First(table as table, optionaldefault as any)as any 第1参数是需要操作的表;第2参数是在空表的情况下的赋值;返回的结果如果是非空表则是第一条记录...例: Table.First(数据)=[姓名="张三",成绩=100,学科="数学"] 解释:返回的是表的第一行,因为只有1行,所以是记录的格式,而不是表格式。...Table.FirstN(数据, each Text.Contains([姓名],"张"))= 解释:查找姓名包含"张"的记录,并返回形成表格。...因为第一条记录是的姓名是张三,满足条件,第二条记录是李四不满足条件结束,所以只返回第一条记录并形成表格。
样例表格: (一)根据值大小提取 1....;第2参数是需要取值的字段名;第3参数是如果为空返回赋予的值;如果不为空则返回的是一个record格式,如果为空则返回赋予的值的格式。...语的Unicode编码是8bed,数的Unicode编码是6570,英的编码是82f1,我们获取最小的值,也就是学科=数学这个的记录。...;第2参数是需要取值的字段名;第3参数是如果为空返回赋予的值;如果不为空则返回的是一个record格式,如果为空则返回赋予的值的格式。...语的Unicode编码是8bed,数的Unicode编码是6570,英的编码是82f1,我们获取最小的值,也就是学科=数学这个的记录。
簇状条形图可以对比本期和同期的绝对值差异,气泡图可以体现增长率值。依据《Power BI表格矩阵内部空间组合》的思路,我们可以在表格方便的制作以下对比图表,条形图在列显示,气泡图在条件格式显示。...如下是《Power BI同期对比这么看》介绍的组合类型,和上图的区别在于条形和气泡之间加了连接线。...在2023年4月之前(参考《Power BI 低调发布一项重大更新》),这样的图表类型需要使用第三方视觉对象展示。现在,表格支持最大512像素的SVG图像显示,因此可以直接显示,列如下设置。...图表度量值的框架与《Power BI同期对比这么看》是一致的,只是把需要构建上下文情境以及图像索引的部分去掉,这是因为表格天然自带上下文情境。
(一) 含义 在Power Query中@是表示范围运算符,通常在使用递归时运用其自身。 (二) 一般使用 把函数自身参数运用于其他函数。...例1: (x) =>@Number.From(x)+10 解释:定义一个调用自身参数并转换成数字格式并+10的函数。这种写法实际上和不指定是一样的,因为参数本身未进行变化参与到后期的运算。...次数 X初始 x-1 X终值 1 5 4 9 2 4 3 12 3 3 2 14 4 2 1 15 例2:累计乘积 如果一个股票目前的市场价格是10元,如果连续5个涨停能达到多少价格呢?...对于多变量的,我们可以通过Record格式来进行记录。同时if的then是作为结束判断语句,else是作为循环运行的计算公式。
(一) 概念介绍 缓冲区(Buffer)就是在内存中预留指定大小的存储空间用来对I/O(输入/输出)的数据做临时存储,这部分预留的内存空间叫缓冲区。 使用缓冲区有两个好处: 减少实际物理读写次数。...缓冲区在创建时就被分配内存,这块内存区域一直被重用,可以减少动态分配和回收内存的次数,一般在实际过程中,我们一般是先将文件读入内存,再从内存写入到别的地方,这样在输入输出过程中我们都可以用缓存来提升IO...缓冲区的作用也是用来临时存储数据,可以理解为是I/O操作中数据的中转站。...缓冲区直接为通道(channel)服务,写入数据到通道或从通道读取数据,这样利用缓冲区数据来传递就可以达到对数据高效处理的目的。 (二) 函数数量 ? (三) 使用场景 ?
Text.PositionOf("abcAaABCaA","a",2){1}=4 解释:正常返回全部"a"所在的位置,是一个列表{0,4,8},我们需要第2次则直接定位列表中的第2项,也就是{1}。...(五) 列表内定位 List.PositionOf 返回字符所处的列表中项的位置 List.PositionOfAny 返回任意批量字符所处列表项的位置 List.PositionOf(list as...List.PositionOf({1,2,1,4,1},{1,2},1)=-1 解释:因为是完全匹配,也就是要查找列表{1,2},但是查找的列表中没有这个列表值,所以返回-1。...(六) 表格内定位 Table.PositionOf 返回row在指定表格中出现的位置 Table.PositionOfAny 返回rows的列表在表格中出现的位置 Table.PositionOf(...因为我们要从列表中挑选数据,格式是{列表}{项目的位置},所以2个都是列表格式,我们在之前计算出结果的基础上套上一层{}代表列表。{3-1}这个就是我们要找的项目的位置。
Power Query2018年就已经支持python了,你尝试过吗?今天说一下power query使用python的步骤和简单应用。...至此,便获取了表中的 ID 列。 ?...总结: 在power query 中 python 使用 dataset 变量来访问当前表的数据; dataset 是 pandas 中 的 DataFrame; 使用python语法对 dataset...的行和列进行操作,可以添加、删除、修改、过滤等 使用python导出表 使用POWER BI进行数据清洗和转换的过程中,经常会得到一张行数很多的表,而在POWER BI中导出表不太方便(少量数据可以直接复制粘贴...) df.to_excel("D:/源.xlsx", index=None) 至此,便成功将power query 中的文件导出至本地。
Power BI表格矩阵有三个可以动态变化的空间,分别是值、总计、条件格式图标。通常情况下,值和总计占据长方形的空间,条件格式图标表现为正方形(参考《Power BI条件格式图标的空间构造》)。...这三个空间可以相互组合生成不同样式的表格矩阵内嵌图表,用于多指标可视化,以下列举常见的几种。 1....ABCDE型 ZebraBI擅长此种类型的图表样式,今年开始Power BI内置表格矩阵也可以方便的制作。这种图表样式只使用了表格矩阵的值(列),多个度量值生成多个图表样式,表现多个指标。...《Power BI表格展示销售排行与利润贡献》这个例子是AB组合,销售额的条形图放在了值上,毛利贡献的气泡图放在了条件格式上。...《Power BI表格可视化之条形排名组合》组合更加紧密,作为排名的图表施加在了条形图表上,实现了图图叠加。 《Power BI表格可视化之空心效果》是上图的空心效果。 4.
在VisualCapitalist看到这么一个排名图,结构是排名+公司logo+行业标签,Power BI矩阵也可以制作类似的效果,这是三种类型的图片组合。...准备数据如下,logo可以是URL、本地图片转Base64或者SVG: 把公司名称放入矩阵行,logo放入值(标记为图像URL),得到以下效果: 行业标签使用SVG度量值包裹,我提供了工具进行制作《Power...BI 万能富标签生成器》,把标签度量值放入矩阵的值,得到: 将值切换到行: 拖拽隐藏不需要的Company列和度量值名称: 为logo添加SVG条件格式排名图标,排名图标的制作方式参考:Power...这是因为条件格式排名图标占据了一定空间,我们没有为标签设置条件格式,任意为标签设置一个不会生效的空白条件格式图标,位置即被占据,形成: 上图标签的背景是相同宽度,设置成按字符数变化也是可以的,如下图右侧...: 本文配套视频讲解在知识星球提供 https://t.zsxq.com/heA5j 该视频隶属于《Power BI SVG图表设计:从基础到实战》系列教程。
比较明显的是分级列,分隔符为全角字符下的逗号,而说明列则是换行符进行分列。2列分别是2种不同的分隔符进行的分割。如果直接在导入数据后对列进行分割会有什么样的效果呢?...但是这种分列效果肯定不是我们所希望,因为我们要的是组合对应的数据,所以得想办法先要进行组合,这里可以使用List.Zip进行组合,分列后的数据是列表格式,所以可以对2列数据分别进行分割后在进行组合,可以在添加列中使用如下代码...List.Zip ({ Text.Split([分级],","), Text.Split([说明],"#(lf)") }) 通过对文本进行拆分后并重新组合成新的列,然后展开列表得到图...4的结果,这时可以看到每组的数据已经是一一对应的了。...但是如何现在直接进行展开的话,也会有问题,我们需要的是2列平行的数据,而展开的时候是展开到列,变成2列的数据了,如图5所示,这又不是我们所希望的结果。 ?
需求:将一个具有多个标题行的数据集转换成表格格式(如下图所示)。这个数据集中不仅有两个标题行,而且还需要将April和May分配给下一行中的3列。...主要遵循的操作步骤如下: 将标题降级到数据中(如果需要)。 转置数据集。 根据需要向上/向下填充。 用分隔符合并原始标题。 转换数据,回到原始形式。...对于第一行仅显示分隔符的列,需要将它们替换成合适的列标题。 将第一行提升为标题。 在逆透视之前执行常规的数据清理操作。 逆透视列。 按上面使用的分隔符拆分属性列。 执行其他最终的数据清理操作。...参考资料: [1] 精通Power Query(https://item.jd.com/14270578.html)
在Power Query中对于数据的类型要求比较严格,如果在中间步骤不是计算必要的数据类型,可以暂时不更改,而等到最后的时候在进行数据类型的更改,这样也能够更方便的发现问题的所在。 ?...例如:表格中的标题列名称可能会进行变化,但是位置不会变,那此时就可以使用变量参数来进行,而不是直接使用列名称来进行操作,如图3所示,此时不管第2列的标题改为什么,只要第2列是代表数字的,这样使用动态参数都不会产生错误...如果仔细观察,在合并非文本列的时候,操作都是一样的,但是在公式中会对原有的表格中需要合并的列进行格式转换,所以要合并的列不管是不是文本格式,都可以预先给转换成文本格式,这样在后续的合并中就不会出错。...(九) 合并查询中的展开表 合并查询在Power Query中使用的比例还是相对挺高的,在使用后都会把匹配的数据给展开,这里就会涉及到一个注意事项,如图18所示,合并查询展开时的公式, ?...字母的大小写 在Power BI的模型关系中,不会区分大小写,如果只是大小写的区分,则会直接判断为多个关系,所以在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个符号类的,有自己的简称,我们记住简称即可。...了解了Unicode编码,那我们看下,在Power Query中如何使用转义字符"#"进行转换。 例1:通过"#"直接进行16进制Unicode编码转义。...=#shared (获得所有函数详细说明) =#table({},{{}}) (构建一个表格) 此外需要注意的是,跟在转义字符#后面的都是小写单词。
其中x代表的就是{1..3}的列表中每一项。 2....List.Transform({"ab","ac","bc"},(x)=>Text.Contains(x,"a")) ={TRUE,TRUE,FALSE} 解释:针对列表中查找是否包含关键词"a"的字符..."a"和"c"的挑选出来后并通过"/"分割组合成一个文本。"..._"代表的是{"ab","ac","abc"}列表中的元素。...,然后再组合成一个新的结果列表。