通过#shared 调取Power Query M函数集

本文介绍如何在PowerQuery中使用#shared调用M函数。步骤包括新建空查询,输入=#shared并转为表格,筛选Name列查找所需函数,点击Function查看解释与示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自微信

有时候我们需要使用Power Query内置的M函数,今天给大家分享如何通过#shared 调取M函数的方法:

1.首先在Power Query里新建一个空查询。
在这里插入图片描述

2.编辑栏输入: " =#shared ",按回车键。
在这里插入图片描述

3.选择“到表中”。
在这里插入图片描述

4.所有的函数已经调取出来。
在这里插入图片描述

接下来就可以筛选Name列找到需要的函数,并且点击Function查看该函数的解释以及示例。

<think>首先,用户的问题是关于Power Query中索引列的高级用法和技巧。用户提到了“索引列的高级用法或技巧”,所以我需要基于提供的引用和我的知识来回答。 回顾系统级指令: - 所有行内数学表达式必须使用$...$格式。 - 独立公式必须使用$$...$$格式并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识,例如:[^1]。 - 用户可见层:回答结构清晰,帮助用户逐步解决问题,保证真实可靠。 提供的引用: - 引用[1]: 关于Power Query M函数的基础信息,包括学习路径、实践要求等。 - 引用[2]: 包含一个Power Query M代码示例,用于表格多列转换,涉及添加索引列。 - 引用[3]: 关于Text.Format函数的使用,但似乎不直接相关。 用户的上一次问题:用户说“我想了解Power Query中索引列的高级用法或技巧”,所以我需要专注于索引列。 关键点: - 索引列在Power Query中用于添加序号或行号,帮助在数据处理中排序、分组或连接数据。 - 高级用法可能包括:动态索引、基于条件添加索引、使用索引进行复杂转换等。 从引用[2]中提取相关部分: - 代码中使用了`Table.AddIndexColumn`来添加索引列。 - 示例:`add_index = Table.AddIndexColumn(Source, "Index", 1, 1, Int64.Type)` - 参数:源表、列名、起始值、步长、数据类型。 - 后续步骤:重命名列、组合表、排序、移除索引等。 高级技巧: 1. **自定义索引**:调整起始值和步长,例如从0开始或使用负步长。 2. **条件索引**:结合其他函数如`Table.SelectRows`或`List.Generate`来添加基于条件的索引。 3. **索引用于连接**:使用索引列来连接多个表或进行自连接。 4. **动态索引**:在分组或聚合后添加索引,以标识组内行号。 5. **索引与排序**:使用索引列来恢复原始顺序或处理排序后的数据。 6. **错误处理和优化**:确保索引列在数据清洗中有效使用。 结构回答: - 介绍索引列的基本概念。 - 详细解释高级用法和技巧。 - 提供示例代码(基于引用或通用)。 - 引用相关部分。 - 生成相关问题。 生成相关问题: - 基于指令,需要生成3个相关问题,放在回答末尾。 回答结构: 1. **引言**:简要介绍索引列在Power Query中的作用。 2. **基本用法回顾**:快速回顾`Table.AddIndexColumn`函数。 3. **高级技巧**:列出并解释几个高级用法。 4. **示例**:提供代码示例(可能基于引用[2])。 5. **总结**:强调实践重要性。 6. **相关问题**:生成相关问题。 使用中文回答。 确保真实可靠:基于Power Query文档和提供的引用。</think>### Power Query 索引列的高级用法与技巧 索引列在 Power Query 中是一个强大的工具,主要用于添加行号或自定义序号,帮助数据排序、分组、连接和转换。基础用法是通过 `Table.AddIndexColumn` 函数实现,但高级技巧能提升数据处理效率,尤其在处理大型数据集或复杂转换时。下面我将逐步解释高级用法,结合示例和最佳实践,确保回答真实可靠。所有内容基于 Power Query 官方文档和行业经验[^1][^2]。 #### 1. **索引列基础回顾** 在 Power Query 中,添加索引列的核心函数是 `Table.AddIndexColumn`,语法如下: ```powerquery-m Table.AddIndexColumn( 源表 as table, 列名 as text, 起始值 as number, 步长 as number, 数据类型 as type ) ``` - **参数说明**: - `起始值`:索引的起始数字(如 1 或 0)。 - `步长`:索引的增量(如 1 表示顺序递增)。 - `数据类型`:通常为 `Int64.Type` 或 `Int32.Type`。 基础示例:添加一个从 1 开始的索引列。 ```powerquery-m let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], AddIndex = Table.AddIndexColumn(Source, "Index", 1, 1, Int64.Type) in AddIndex ``` #### 2. **索引列的高级技巧** 索引列的高级用法聚焦于动态处理、条件逻辑和性能优化。以下是关键技巧,结合 M 函数实现。 ##### **技巧 1: 动态起始值和步长** 通过变量控制索引参数,适应数据变化。例如,基于列的最大值设置起始索引,避免手动调整。 - **应用场景**:数据分页或批次处理时,自动计算起始索引。 - **示例代码**: ```powerquery-m let Source = Excel.CurrentWorkbook(){[Name="SalesData"]}[Content], MaxID = List.Max(Source[ID]), // 获取现有ID的最大值 StartIndex = if MaxID > 0 then MaxID + 1 else 1, // 动态设置起始值 AddIndex = Table.AddIndexColumn(Source, "NewIndex", StartIndex, 1, Int64.Type) in AddIndex ``` - **优势**:处理新增数据时,索引无缝衔接,减少错误[^2]。 ##### **技巧 2: 条件索引(基于分组或过滤)** 结合 `Table.Group` 或 `Table.SelectRows`,为子集添加独立索引。例如,为每个客户组添加组内行号。 - **应用场景**:数据分类后,生成序列号(如订单项按客户排序)。 - **示例代码**: ```powerquery-m let Source = Excel.CurrentWorkbook(){[Name="Orders"]}[Content], Grouped = Table.Group(Source, {"CustomerID"}, {{"Group", each _, type table}}), AddGroupIndex = Table.TransformColumns(Grouped, {"Group", each Table.AddIndexColumn(_, "GroupIndex", 1, 1, Int64.Type)}), Expand = Table.ExpandTableColumn(AddGroupIndex, "Group", {"OrderID", "Amount", "GroupIndex"}) in Expand ``` - **说明**:先按 `CustomerID` 分组,再为每组添加索引,最后展开表。这避免了全局索引的干扰[^1]。 ##### **技巧 3: 索引用于表连接和排序恢复** 索引列可作为“锚点”,在复杂转换(如列转行)后恢复原始顺序。 - **应用场景**:多列合并时,防止数据错位(引用[2]中的示例)。 - **示例代码**(基于引用[2]的优化): ```powerquery-m let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], add_index = Table.AddIndexColumn(Source, "Index", 1, 1, Int64.Type), // 添加索引 combine_tab = Table.Combine({ Table.RenameColumns(add_index[[Col1],[Col2],[Att1],[Att3],[Att5],[Index]],{{"Att1","cn1"},{"Att3","cn2"},{"Att5","cn3"}}), Table.RenameColumns(add_index[[Col1],[Col2],[Att2],[Att4],[Att6],[Index]],{{"Att2","cn1"},{"Att4","cn2"},{"Att6","cn3"}}) }), sort_row = Table.Sort(combine_tab, {{"Index", Order.Ascending}}), // 用索引恢复顺序 output = Table.RemoveColumns(sort_row,{"Index"}) // 移除临时索引 in output ``` - **关键点**:索引列在 `Table.Combine` 后用于排序,确保数据一致性。这在处理不规则数据时至关重要[^2]。 ##### **技巧 4: 错误处理和性能优化** 索引列可能引入性能问题(如大数据集),需结合容错机制。 - **最佳实践**: - **增量加载**:在数据源步骤后尽早添加索引,减少后续计算量。 - **错误捕获**:使用 `try...otherwise` 处理索引冲突(如重复值)。 - **示例代码**: ```powerquery-m let Source = Excel.CurrentWorkbook(){[Name="Logs"]}[Content], SafeAddIndex = try Table.AddIndexColumn(Source, "Index", 1, 1, Int64.Type) otherwise Source // 错误时回退 in SafeAddIndex ``` - **提示**:在 Power Query 编辑器中,利用“删除步骤”功能回退测试,提升开发效率[^1]。 #### 3. **总结与建议** 索引列的高级用法能显著提升 Power Query 的灵活性,尤其在数据整合和转换场景。核心在于: - **动态参数**:通过变量使索引适应数据变化。 - **条件逻辑**:结合分组或过滤实现局部索引。 - **连接与排序**:用索引维护数据顺序,避免混乱。 - **性能优先**:在数据流早期添加索引,并测试边界条件。 Power Query 的 M 函数需通过实践掌握,建议在“高级编辑器”中练习,输入 `=#shared` 查询所有函数列表[^1]。官方文档是宝贵资源: [Power Query M 函数参考](https://learn.microsoft.com/en-us/powerquery-m/)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值