首页
学习
活动
专区
圈层
工具
发布

Power Query中@的用法—递归

(一) 含义 在Power Query中@是表示范围运算符,通常在使用递归时运用其自身。 (二) 一般使用 把函数自身参数运用于其他函数。...例1: (x) =>@Number.From(x)+10 解释:定义一个调用自身参数并转换成数字格式并+10的函数。这种写法实际上和不指定是一样的,因为参数本身未进行变化参与到后期的运算。...(三) 循环使用 例1:累加求和 fx=(x)=>if x<=1 then x else @fx(x-1)+x 解释:因为涉及到循环,需要制定一个循环结束条件。此函数为正数累加求和。...从1累计到5进行求和。...对于多变量的,我们可以通过Record格式来进行记录。同时if的then是作为结束判断语句,else是作为循环运行的计算公式。

1.7K20

Power Query中Buffer的用法

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

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

    Power Query中数据的定位

    定位本查询: 步骤名[字段名]{行号} 如果行号为数字,[字段名]和{行号}位置可以互换 =源[姓名]{0} =源{[姓名="张三"]}[姓名] 请注意这里的前后顺序,必须条件行号在前,[字段名]在后。...指定字段当前行直接使用[字段名],例如在添加列里面直接使用[字段名]代表的就是当前指定的字段名的当前行的值。 2....Text.PositionOf("abcAaABCaA","a",2){1}=4 解释:正常返回全部"a"所在的位置,是一个列表{0,4,8},我们需要第2次则直接定位列表中的第2项,也就是{1}。...(五) 列表内定位 List.PositionOf 返回字符所处的列表中项的位置 List.PositionOfAny 返回任意批量字符所处列表项的位置 List.PositionOf(list as...因为我们要从列表中挑选数据,格式是{列表}{项目的位置},所以2个都是列表格式,我们在之前计算出结果的基础上套上一层{}代表列表。{3-1}这个就是我们要找的项目的位置。

    2.6K20

    Power Query如何处理日月年的时间列?

    我们导入的时候有一个日期列,格式如下 ? 对我们来说可以理解为,日/月/年,但是我们看下导入到Power Query中会如何显示? ?...我们看到,在导入的时候系统自动做了更改类型的处理,但是处理的格式是文本,而不是日期,那这个类型的更改肯定不是我们所希望的。...(一) 操作法 我们把更改的类型这个步骤改下,手动把类型调整为日期来看下效果。 ? 结果告诉我们日期格式出错了,系统默认的日期转换难道分辨不了日/月/年的格式吗?...我们看下此函数有3个参数 参数位置 类型 含义 第1参数 table 需要操作的表 第2参数 list 批量转换指定列及类型 可选第3参数 text 区域格式 看下之前的类型转换的函数书写 ?...只使用了第2参数,第3参数未使用,所以我们需要加上第3参数区域的设置。 2. 添加第3参数 ? 这样就能得到我们原先想要的结果了。

    3.3K10

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

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

    6.1K41

    如何理解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编码转义。...在进行Unicode编码转义时,必须用""在最外面,转义的编码在()内即可。当然如果直接转义就不需要了。 ? ="123#(0061)bc" ? 例2:通过#转义含有特殊字符的字段名。

    4.1K10

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

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

    3.2K21

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

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

    1.1K00

    Power Query中的文本函数Text.StartMiddleRangeEndAtLength

    start_num 要替换为 new_text 的字符在 old_text 中的位置 。 num_chars 要替换的字符数。...警告 :如果参数 num_chars 为空白,或引用计算结果为空白的列,则 new_text 的字符串插入到 start_num 位置,而不替换任何字符 。 这与在 Excel 中的行为相同。...在使用上也有所不同: 具体说明,可以参考畅神的这篇文章:https://pqfans.com/194.html 重点说明的是,Text.Middle/Range的索引是从0开始的,这与DAX中的mid...text 中的相同位置插入文本值 newText 的结果。...结论 在Power Query中,因为可以使用if函数,很多判断性的问题就可以直接进行了,而不需要像DAX中那样,通过LEFT和RIGHT函数来变相地实现。

    2.9K10

    优化Power BI中的Power Query合并查询效率:每个Query最高256MB内存限制的说明

    关于优化Power BI中的Power Query合并查询效率,之前写过三篇文章: 优化Power BI中的Power Query合并查询效率,Part 1:通过删除列来实现 优化Power BI中的...优化Power BI中的Power Query合并查询效率,Part 3:Table.Join和SortMerge 针对文中说到的256MB内存限制的问题,有朋友提出了质疑: ?.../ 在这篇文章中,作者提到2020年4月PowerBI的更新中Query Diagnostics功能被加强: https://docs.microsoft.com/en-us/power-query/querydiagnostics...Power Query每半秒种会记录一次资源利用情况,如果是时间很短的查询,没啥用处,但是如果查询时间很长,那么就可以用它来进行一些分析了。...下图就是一个查询的过程被Query Diagnostics记录了一下,横轴是时间,纵轴是消耗的内存: ? 上图没什么异常,因为使用内存比较小。

    5.8K20

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

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

    3.5K40

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

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

    5.3K20

    优化Power BI中的Power 优化Power BI中的Power Query合并查询效率,Part 1:通过删除列来实现

    本篇文章主体部分为翻译Chris Webb的一篇文章。 合并查询在Power Query中是很成熟的应用,相当于SQL中的各种JOIN(抽时间会写几篇SQL的join,算是SQL的小核心)。...但同时,在Power Query中合并查询是一个常见的影响刷新效率的因素。在我的工作中,经常会遇到对一些非文件夹性质的数据源进行合并查询操作,所以我一直在想,有没有办法可以对其进行优化。...– 0 秒 以上的确能够得出结论:合并查询时,列数的多少的确会影响效率, 以上还揭示了:在以上两个查询中,读取数据是立刻发生的,几乎不占用时间,相比之下,最开始的两次查询中读取数据的时间甚至要比执行SQL...还记得我们之前说过的微软的产品无处不在的节省算力吗? 节省算力:提前知晓同一字段的所有筛选器,先进行合并,再进行计算,避免对同一字段重复计算。 这就是下一篇的内容了。...参考文档: Chris Webb https://blog.crossjoin.co.uk/2020/05/31/optimising-the-performance-of-power-query-merges-in-power-bi-part

    5.8K10

    Power Pivot中DAX的时间函数

    差异情况 差异原因 Excel函数 Dax函数 函数名称 DateDif DateDiff 计算方式 根据实际时间 只根据计算条件 2....D) 作用 生成2个时间点之间的时间列表 E) 案例 CALENDAR(date(2018,1,1),DATE(2018,12,31)) 自动生成从2018年1月1日开始到2018年12月31日为止的单列日期表...填写1-12的月份数字 往前推或者往后延做成年份日期表 B) 返回 表——单列日期表 C) 注意事项 如果数据表中没有日期列则会出错 参数为正数则表示会计年份从1月往后算,负数则是从1月往前算。...D) 作用 自动生成会计日期列 E) 案例 自动生成时间日历表 CALENDARAUTO() 如果数据模型的日期范围是2018/5/1—2019/6/30,则生成的日期表范围为2018/1/1—2019.../12/31 生成会计年度为每年4月 CALENDARAUTO(3) 如果数据模型的日期范围为2018/1/1—2018/12/31,则生成的日期表范围为2017/4/1—2019/3/31。

    2.4K10

    一次性学懂Excel中的Power Query和Power Pivot使用

    但是,如果使用Excel中的Power Query和Power Pivot商务智能组件,即使是上百万行数据,也可以在短时间内快速完成处理和分析。...其实,Power BI中的Power Query和Power Pivot最早是以Excel为载体的。...换句话说,Power BI中的Power Query和Power Pivot组件的功能和语法等方面都是一样的。...紧贴实际应用场景,介绍Power Query和Power Pivot在数据分析方面的应用(50+个实例) 02. 针对综合性强和难点章节配有视频(超过25节共1G+视频讲解) 03. ...函数”动态提取Power Pivot数据模型中的数据 第10  章时间智能计算 10.1 认识时间智能函数和日期表 10.1.1 时间智能函数与日期函数 10.1.2 日期表的创建与标记 10.1.3

    11.3K20

    四种分组求和方法,操作简单效率又高的竟然是这个!| Power Query实战

    这个问题很常见,解决起来也不难,即按“型号+序号”进行分组,对后面各“日期”列求和: 这个问题的方法很多,当数据量不大的时候,各种方法在效率上不会有多大的差异,但是,如果数据量很大,可能就会体现出来较大的差别...以下随机生成一个近19万行、经分组后仍然超过18万行的数据,通过4种常见的方法做操作和效率对比,供大家参考。...- 1 - 直接分组法 直接分组法很简单,就是直接选中“型号”和“序号”列,然后“分组”,在分组里通过多次“添加聚合”,完成对每个日期列的求和: 这种方法从理解上来说最简单,而且,经测试,也是运行效率最高的...但这个问题既然都在Power Query里处理,那么,逆透视后,可以对“型号”、“序号”及“日期(属性)”三列进行分组求和,然后再透视即得结果。...“计数”列即可: - 4 - 逆透视再透视法 这个特定的场景,完全可以逆透视后,再直接在透视时进行聚合,所以,上面方法中的分组步骤,其实是多余的。

    5.7K30

    优化Power BI中的Power Query合并查询效率,Part 3:Table.Join和SortMerge

    前两篇文章中: 优化Power BI中的Power Query合并查询效率,Part 1:通过删除列来实现 优化Power BI中的Power Query合并查询效率,Part 2:合并查询前or后删除多余的列有区别吗...,排序也是需要时间的,而且排序恰好就是把表放在内存中进行,你会发现对两张表排序的时间差不多也就是两种方法的时间差,所以性能上也没啥区别。...另外,当你准备从两个不同的数据库中导入数据并进行合并查询,比如SQL Server 和 Oracle,两者都支持从文件夹中获取数据并排序,这个过程中的排序的时间,很有可能会小于使用Table.Join和...zh-cn/powerquery-m/table-join https://blog.crossjoin.co.uk/2020/06/07/optimising-the-performance-of-power-query-merges-in-power-bi-part...-3-table-join-and-sortmerge/ https://radacad.com/power-query-library-of-functions-shared-keyword

    5.2K10

    如何用Power Query处理Excel中解决不了的分列

    之前我们有聊到Excel中会有一些完成不了的分列,这次我们来看下在Power Query中如何进行。...分列数据的方法比较 在Power Query中大部分分割操作可以直接通过菜单进行,在拆分列菜单中主要有2个选择,一个是按分隔符,另外一个是按字符数。 ? 1. 通过换行符进行分隔 ? ?...另外需要注意的是,分隔符不限于符号,还可以英文字母,文本数字等。 ? ? 3. 跳位进行分隔 在操作栏的分割中,可以对分隔符进行3种处理,最左边的,最右边的,以及全部出现的分隔符进行分割。 ?...分隔后按行排序 在Power Query中,不仅可以分割后按列进行,还可以按行进行。 ? ?...简简单单的一个函数既可以作为一个工具灵活使用,相当于一个模版,参数直接在Excel表格里面填写即可实现所需要的功能。 ? 可以仔细观察跳过1次和跳过0次的区别。

    2.6K10
    领券