表函数
这些函数创建并操纵表值。
构造表
函数 | 说明 |
---|---|
ItemExpression.From | 返回函数主体的抽象语法树 (AST)。 |
ItemExpression.Item | 表示项表达式中项的抽象语法树 (AST) 节点。 |
RowExpression.Column | 返回表示对行表达式中列的访问权限的抽象语法树 (AST)。 |
RowExpression.From | 返回函数主体的抽象语法树 (AST)。 |
RowExpression.Row | 表示行表达式中行的抽象语法树 (AST) 节点。 |
Table.FromColumns | 从包含嵌套列表的列表中返回一个带有列名称和值的表。 |
Table.FromList | 通过将指定的拆分函数应用于列表中的每一项,将列表转换为表。 |
Table.FromRecords | 从记录列表中返回一个表。 |
Table.FromRows | 从列表中创建一个表,其中列表的每个元素都是包含单行列值的列表。 |
Table.FromValue | 返回一个表,此表中的某一列包含所提供的值或值列表。 |
Table.FuzzyGroup | 按每行的指定列中模糊匹配的值对表的行进行分组。 |
Table.FuzzyJoin | 联接两个表中基于给定键模糊匹配的行。 |
Table.FuzzyNestedJoin | 在两个表之间对提供的列执行模糊联接,并在新列中生成联接结果。 |
Table.Split | 使用指定页面大小将指定表拆分为一表列表。 |
Table.View | 使用用户定义的处理程序创建或扩展表以执行查询和操作。 |
Table.ViewFunction | 创建一个可以由在视图上(通过 Table.View )定义的处理程序截获的函数。 |
转换
函数 | 说明 |
---|---|
Table.ToColumns | 返回嵌套列表的一个列表,其中每个列表表示输入表中值的列。 |
Table.ToList | 通过将指定的组合函数应用于表中的每一行值,将表返回到列表中。 |
Table.ToRecords | 从输入表中返回记录列表。 |
Table.ToRows | 从输入表中返回行值的嵌套列表。 |
信息
功能 | 说明 |
---|---|
Table.ApproximateRowCount | 返回表中的近似行数。 |
Table.ColumnCount | 返回表中的列数。 |
Table.IsEmpty | 如果表中不包含任何行,则返回 true。 |
Table.Profile | 返回表中列的配置文件。 |
Table.RowCount | 返回表中的行数。 |
Table.Schema | 返回一个表,此表包含指定表的列的描述(即架构)。 |
Tables.GetRelationships | 返回一组表之间的关系。 |
行操作
函数 | 说明 |
---|---|
Table.AlternateRows | 返回一个表,此表包含表中的行的交替模式。 |
Table.Combine | 返回作为合并一个表列表的结果的表。 这些表必须具有相同的行类型结构。 |
Table.FindText | 返回一个表,此表仅包含特定行,这些行的其中一个单元格或任何部分包含了指定文本。 |
Table.First | 返回表中的第一行。 |
Table.FirstN | 返回表中的第一行(或前几行),具体因 countOrCondition 参数而异。 |
Table.FirstValue | 返回表的第一行的第一列或指定的默认值。 |
Table.FromPartitions | 将作为组合一组分区表的结果的表返回到新的列。 可以选择性地指定列的类型,默认值为 any。 |
Table.InsertRows | 返回一个表,其中包含在索引处插入到表中的行的列表。 要插入的每一行都必须与表的行类型相匹配。 |
Table.Last | 返回表的最后一行。 |
Table.LastN | 返回表中的最后一行(或最后几行),具体因 countOrCondition 参数而异。 |
Table.MatchesAllRows | 如果表中的所有行均满足条件,则返回 true。 |
Table.MatchesAnyRows | 如果表中的任一行均满足条件,则返回 true。 |
Table.Partition | 根据每行的列值和一个哈希函数,将表分区为表的组数的一个列表。 哈希函数应用于行的列值以获取此行的哈希值。 哈希值的取模组决定要在其中放置行的返回表。 |
Table.PartitionValues | 返回有关如何对表进行分区的信息。 |
Table.Range | 从表中返回从偏移量开始的指定行数。 |
Table.RemoveFirstN | 返回一个表,此表从第一行开始删除了指定行数。 删除的行数取决于可选的 countOrCondition 参数。 |
Table.RemoveLastN | 返回一个表,此表从最后一行开始删除了指定行数。 删除的行数取决于可选的 countOrCondition 参数。 |
Table.RemoveRows | 返回一个表,此表从偏移量开始删除了指定行数。 |
Table.RemoveRowsWithErrors | 返回一个表,从表中删除了至少一个单元格包含错误的所有行。 |
Table.Repeat | 返回一个表,此表包含表中重复计数次数的行。 |
Table.ReplaceRows | 返回一个表,其中采用了提供的行代替从偏移量开始且继续计数的行。 |
Table.ReverseRows | 返回一个表,其中的行以相反顺序排序。 |
Table.SelectRows | 返回一个表,此表仅包含符合条件的行。 |
Table.SelectRowsWithErrors | 返回一个表,此表中只有至少一个单元格包含错误的行。 |
Table.SingleRow | 从表中返回单个行。 |
Table.Skip | 返回一个表,此表不包含表的第一行或前几行。 |
Table.SplitAt | 返回包含指定的第一个计数行和其余行的列表。 |
列操作
函数 | 说明 |
---|---|
Table.Column | 返回表中一列的值。 |
Table.ColumnNames | 从表中返回列的名称。 |
Table.ColumnsOfType | 返回带有与指定类型相匹配的列名称的列表。 |
Table.DemoteHeaders | 将标题行向下降级为表的第一行。 |
Table.DuplicateColumn | 复制具有指定名称的列。 值和类型是从源列复制的。 |
Table.HasColumns | 如果表具有指定的一列或多列,则返回 true。 |
Table.Pivot | 给定表和包含透视值的属性列,为每个透视值创建新列并从 valueColumn 中分配它们的值。 可以提供可选的 aggregationFunction 来处理属性列中多次出现的相同键值。 |
Table.PrefixColumns | 返回一个表,其中所有列均以文本值为前缀。 |
Table.PromoteHeaders | 将表的第一行升级为其标头或列名称。 |
Table.RemoveColumns | 返回不包含特定一列或多列的表。 |
Table.ReorderColumns | 返回一个表,此表包含采用与另一列相对的顺序排列的特定列。 |
Table.RenameColumns | 返回一个表,此表中按指定内容对列进行了重命名。 |
Table.SelectColumns | 返回仅包含特定列的表。 |
Table.TransformColumnNames | 使用给定的函数转换列名。 |
Table.Unpivot | 给定表列的列表,将这些列转换为属性值对。 |
Table.UnpivotOtherColumns | 将指定集以外的所有列转换为属性值对,与每行中的剩余值相合并。 |
参数
参数值 | 说明 |
---|---|
JoinKind.Inner | Table.Join 中可选 JoinKind 参数的可能值。 从内部联接生成的表包含根据指定键列确定为匹配的指定表中的每个行对所对应的行。 |
JoinKind.LeftOuter | Table.Join 中可选 JoinKind 参数的可能值。 左外部联接可确保第一个表的所有行都出现在结果中。 |
JoinKind.RightOuter | Table.Join 中可选 JoinKind 参数的可能值。 右外部联接可确保第二个表的所有行都出现在结果中。 |
JoinKind.FullOuter | Table.Join 中可选 JoinKind 参数的可能值。 完全外部联接可确保两个表的所有行都出现在结果中。 在另一表中没有匹配项的行会与包含所有列的 NULL 值的默认行联接。 |
JoinKind.LeftAnti | Table.Join 中可选 JoinKind 参数的可能值。 左反返回第一个表中在第二个表中不具有匹配项的所有行。 |
JoinKind.RightAnti | Table.Join 中可选 JoinKind 参数的可能值。 右反操作返回第二个表中在第一个表中不具有匹配项的所有行。 |
MissingField.Error | 记录和表函数中的一个可选参数,指示缺失字段将导致错误。 (这是默认的参数值。) |
MissingField.Ignore | 记录和表函数中的一个可选参数,指示应忽略缺失字段。 |
MissingField.UseNull | 记录和表函数中的一个可选参数,指示应将缺失字段作为 NULL 值包含在内。 |
GroupKind.Global | 全局组由输入表中具有相同键值的所有行组成。 |
GroupKind.Local | 本地组由输入表中具有相同键值的连续行序列组成。 |
ExtraValues.List | 如果拆分器函数返回的列比表所需的列多,应将它们收集到列表中。 |
ExtraValues.Ignore | 如果拆分器函数返回的列比表所需的列多,应忽略它们。 |
ExtraValues.Error | 如果拆分器函数返回的列数多于表的预期值,会引发错误。 |
JoinAlgorithm.Dynamic | 基于检查两个表的初始行和元数据自动选择联接算法。 |
JoinAlgorithm.PairwiseHash | 缓冲左表和右表中的行,直到其中一个表完全缓冲,然后执行 LeftHash 或 RightHash,具体取决于哪个表已完全缓冲。 建议仅对小型表使用此算法。 |
JoinAlgorithm.SortMerge | 基于两个表都是按联接键排序的假设,执行流合并。 虽然这种情况有效,但如果表没有按预期排序,则会返回不正确的结果。 |
JoinAlgorithm.LeftHash | 将左行缓冲到查找表中,并流式传输右行。 对于每个右行,可通过缓冲查找表找到匹配的左行。 当左表较小且右表中的大部分行预期与左行匹配时,建议使用此算法。 |
JoinAlgorithm.RightHash | 将右行缓冲到查找表中,并流式传输左行。 对于每个左行,可通过缓冲查找表找到匹配的右行。 当右表较小且左表中的大部分行预期与右行匹配时,建议使用此算法。 |
JoinAlgorithm.LeftIndex | 在批处理中,使用左表中的键对右表执行基于谓词的查询。 如果右表很大,支持 Table.SelectRows 的折叠,并且包含的行数应与左行匹配,则建议使用此算法。 |
JoinAlgorithm.RightIndex | 在批处理中,使用右表中的键对左表执行基于谓词的查询。 如果左表很大,支持 Table.SelectRows 的折叠,并且包含的行数应与右行匹配,则建议使用此算法。 |
JoinSide.Left | 指定联接的左表。 |
JoinSide.Right | 指定联接的右表。 |
转换
组选项的参数
GroupKind.Global = 0;
GroupKind.Local = 1;
联接类型的参数
JoinKind.Inner = 0;
JoinKind.LeftOuter = 1;
JoinKind.RightOuter = 2;
JoinKind.FullOuter = 3;
JoinKind.LeftAnti = 4;
JoinKind.RightAnti = 5
联接算法
可以将以下 JoinAlgorithm 值指定为 Table.Join
JoinAlgorithm.Dynamic 0,
JoinAlgorithm.PairwiseHash 1,
JoinAlgorithm.SortMerge 2,
JoinAlgorithm.LeftHash 3,
JoinAlgorithm.RightHash 4,
JoinAlgorithm.LeftIndex 5,
JoinAlgorithm.RightIndex 6,
参数值 | 说明 |
---|---|
JoinSide.Left | 指定联接的左表。 |
JoinSide.Right | 指定联接的右表。 |
示例数据
本部分中的示例使用了下表。
客户表
Customers = Table.FromRecords({ [CustomerID = 1, Name = "Bob", Phone = "123-4567"], [CustomerID = 2, Name = "Jim", Phone = "987-6543"], [CustomerID = 3, Name = "Paul", Phone = "543-7890"], [CustomerID = 4, Name = "Ringo", Phone = "232-1550"] }
订单表
Orders = Table.FromRecords({ [OrderID = 1, CustomerID = 1, Item = "Fishing rod", Price = 100.0], [OrderID = 2, CustomerID = 1, Item = "1 lb. worms", Price = 5.0], [OrderID = 3, CustomerID = 2, Item = "Fishing net", Price = 25.0], [OrderID = 4, CustomerID = 3, Item = "Fish tazer", Price = 200.0], [OrderID = 5, CustomerID = 3, Item = "Bandaids", Price = 2.0], [OrderID = 6, CustomerID = 1, Item = "Tackle box", Price = 20.0], [OrderID = 7, CustomerID = 5, Item = "Bait", Price = 3.25], [OrderID = 8, CustomerID = 5, Item = "Fishing Rod", Price = 100.0], [OrderID = 9, CustomerID = 6, Item = "Bait", Price = 3.25] })
函数 | 说明 |
---|---|
Table.AddColumn | 将名为 newColumnName 的列添加到表中。 |
Table.AddFuzzyClusterColumn | 添加一个新列,该列具有通过对表中指定列的值进行模糊分组而获得的代表值。 |
Table.AddIndexColumn | 返回一个表,此表包含带有指定名称的新列,其中每行都包含表中的行的索引。 |
Table.AddJoinColumn | 从特定列执行 table1 和 table2 之间的嵌套联接,并为 table1 的每一行生成作为 newColumnName 列的联接结果。 |
Table.AddKey | 将键添加到表。 |
Table.AggregateTableColumn | 将嵌套在特定列中的表聚合到包含这些表的聚合值的多列中。 |
Table.CombineColumns | Table.CombineColumns 使用组合程序函数合并列来生成新列。 Table.CombineColumns 与 Table.SplitColumns 相反。 |
Table.CombineColumnsToRecord | 将指定的列合并为新的记录值列,其中每个记录都具有与组合列的列名和值相对应的字段名称和值。 |
Table.ConformToPageReader | 此函数仅计划供内部使用。 |
Table.ExpandListColumn | 给定表中的列表列,为其列表中的每个值创建行的副本。 |
Table.ExpandRecordColumn | 将记录列扩展为具有每个值的列。 |
Table.ExpandTableColumn | 将一个记录列或表列扩展到包含表中的多列。 |
Table.FillDown | 使用列中的最新非 NULL 值替换表中指定一列或多列中的 NULL 值。 |
Table.FillUp | 从指定的表中返回一个表,其中下一个单元格的值会传播到指定的列中上面值为 NULL 的单元格。 |
Table.FilterWithDataTable | 此函数仅计划供内部使用。 |
Table.Group | 按每行的键列的值对表行进行分组。 |
Table.Join | 基于 table1、key1 以及 table2、key2 选择的键列的值的相等性,联接 table1 的行和 table2 的行。 |
Table.Keys | 返回表中键列名称的列表。 |
Table.NestedJoin | 基于键的相等性联接表中的行。 结果会输入到新列中。 |
Table.ReplaceErrorValues | 使用相应的指定值替换指定列中的错误值。 |
Table.ReplaceKeys | 返回一个新表,此表具有在键参数中设置的新键信息。 |
Table.ReplaceRelationshipIdentity | |
Table.ReplaceValue | 通过使用提供的替换器函数(例如 text.Replace 或 Value.Replace),用 newValue 替换表的特定列中的 oldValue。 |
Table.SplitColumn | 将拆分器函数应用于每个值来从单个列中返回新的一组列。 |
Table.TransformColumns | 使用函数转换表中的列。 |
Table.TransformColumnTypes | 使用类型转换表中的列类型。 |
Table.TransformRows | 使用转换函数转换表中的行。 |
Table.Transpose | 返回一个表,此表将输入表中的列转换为了行,将行转换为了列。 |
Membership
用于成员身份检查的参数
匹配项规范
Occurrence.First = 0
Occurrence.Last = 1
Occurrence.All = 2
函数 | 描述 |
---|---|
Table.Contains | 确定记录是否显示为表中的一行。 |
Table.ContainsAll | 确定所有指定的记录是否显示为表中的各行。 |
Table.ContainsAny | 确定任何指定的记录是否显示为表中的各行。 |
Table.Distinct | 删除表中的重复行,从而确保留下的所有行都是不同的。 |
Table.IsDistinct | 确定表是否仅包含非重复行。 |
Table.PositionOf | 确定行在表中的一个或多个位置。 |
Table.PositionOfAny | 确定任何指定的行在表中的一个或多个位置。 |
Table.RemoveMatchingRows | 从表中删除行的所有匹配项。 |
Table.ReplaceMatchingRows | 使用新行替换表中的特定行。 |
中间件排序
示例数据
本部分中的示例使用了下表。
员工表
Employees = Table.FromRecords( { [Name="Bill", Level=7, Salary=100000], [Name="Barb", Level=8, Salary=150000], [Name="Andrew", Level=6, Salary=85000], [Name="Nikki", Level=5, Salary=75000], [Name="Margo", Level=3, Salary=45000], [Name="Jeff", Level=10, Salary=200000] }, type table [ Name = text, Level = number, Salary = number ])
函数 | 描述 |
---|---|
Table.Max | 使用 comparisonCriteria 返回表中的最大的行或最大的几行。 |
Table.MaxN | 返回表中最大的 N 行。 对行进行排序后,必须指定 countOrCondition 参数以进一步筛选结果。 |
Table.Min | 使用 comparisonCriteria 返回表中的最小的行或最小的几行。 |
Table.MinN | 返回给定表中最小的 N 行。 对行进行排序后,必须指定 countOrCondition 参数以进一步筛选结果。 |
Table.Sort | 使用 comparisonCriteria 或默认顺序(若未指定)对表中的行进行排序。 |
其他
函数 | 描述 |
---|---|
Table.Buffer | 在内存中缓冲一个表,从而在计算期间将其与外部更改相隔离。 |
参数值
为输出列命名
此参数为文本值的一个列表,指定生成的表的列名。 此参数通常用在 Table 构造函数中,例如 Table.FromRows 和 Table.FromList。
比较条件
可将比较条件提供为以下值之一:
用于指定排序顺序的一个数字值。 请参阅上述“参数值”一节中的排序顺序。
若要计算用于排序的键,可以使用具有 1 个参数的函数。
若要选择键并控制顺序,比较条件可以是包含键和顺序的列表。
若要完全控制比较,可以使用具有 2 个参数的函数,此函数将根据左输入和右输入之间的关系返回 -1、0 或 1。 Value.Compare 是可用于委托此逻辑的方法。
有关示例,请参阅 Table.Sort 的说明。
Count 或 Condition 条件
此条件通常用于排序或行操作。 它确定表中返回的行数,并且可以采用数字或条件两种形式:
数字指示适当函数中返回的值的数量
如果指定了条件,则返回包含的值最初满足条件的行。 一旦有一个值不符合条件,则不再考虑其他值。
请参阅 Table.FirstN 或 Table.MaxN。
额外值的处理
这用于指示函数应如何处理行中的额外值。 此参数指定为一个数字,此数值会映射到下面的选项。
ExtraValues.List = 0 ExtraValues.Error = 1 ExtraValues.Ignore = 2
有关详细信息,请参阅 Table.FromList。
缺少列处理
这用于指示函数应如何处理缺少的列。 此参数指定为一个数字,此数值会映射到下面的选项。
MissingField.Error = 0; MissingField.Ignore = 1; MissingField.UseNull = 2;
这用于列或转换操作。 有关示例,请参阅 Table.TransformColumns。
排序顺序
这用于指示结果的排序方式。 此参数指定为一个数字,此数值会映射到下面的选项。
Order.Ascending = 0 Order.Descending = 1
相等条件
可将表的相等条件指定为
一个函数值,它可以是
一个键选择器,确定表中要应用相等条件的列,或
一个比较器函数,用于指定要应用的比较类型。 可以指定内置的比较器函数,请参阅“比较器函数”一节。
一个列表,列出了要应用相等条件的列
有关示例,请查看 Table.Distinc 的说明。