按输入表的名称、动态数组或名称模式选择并重新排序列的子集。
Syntax
T| project-by-namesColumnSpecifier [, ...]
详细了解 语法约定。
Parameters
| Name | 类型 | Required | Description |
|---|---|---|---|
| T | string |
✔️ | 要从中删除列的表格输入。 |
| ColumnSpecifier | string |
✔️ | 要保留和重新排序的列名称、列名称的动态数组或列通配符模式。 |
Note
- 结果中的列根据指定或匹配的顺序进行排序。
- 安全忽略与任何现有列不匹配的列名称。
- 通配符 \ 可用于按名称模式匹配多个列。
- ColumnSpecifier 可以包含 column_names_of(Table) 表达式的结果,该表达式从指定表中返回列名的动态数组。
- ColumnSpecifier 参数不支持子查询或标量表达式(如 toscalar()。
- 对于相关功能:
- 用于
project-away从结果中排除特定列。 - 用于
project-keep保留列而不更改其顺序。 - 用于
project-rename重命名列。
- 用于
Returns
一个表,仅包含 ColumnSpecifier 参数中指定的列(按指定顺序)。 所有未指定的列都从结果中排除。
Examples
以下示例演示如何使用 project-by-names 运算符从表中选择和重新排序列。
输入表有四列: Name、 Age、 City和 Country。
保留并重新排序特定列
使用运算符仅 Name 保留和 City 列。
datatable(Name:string, Age:int, City:string, Country:string)
['Peter', 39, 'New York', 'USA']
| project-by-names "Name", "City"
Output
| Name | City |
|---|---|
| Peter | New York |
使用动态数组保留列
通过提供列名称的动态数组,使用运算符从输入表中选择列。
datatable(Name:string, Age:int, City:string, Country:string)
['Peter', 39, 'New York', 'USA']
| project-by-names dynamic(["Name", "Country"])
Output
| Name | Country |
|---|---|
| Peter | USA |
使用列名称模式保留列
使用运算符从输入表中选择从开头 C的列。
datatable(Name:string, Age:int, City:string, Country:string)
['Peter', 39, 'New York', 'USA']
| project-by-names "C*"
Output
| City | Country |
|---|---|
| New York | USA |
使用动态数组查找和保留查阅列
执行查找后,使用运算符保留表中的列,指定使用动态数组保留哪些列。
let LookupTable =
datatable(Name:string, Age:int, City:string, Country:string)
['Peter', 39, 'New York', 'USA'];
let LookupColumns = (Source:(Name:string), lookup_columns: dynamic) {
Source
| lookup LookupTable on Name
| project-by-names column_names_of(Source), lookup_columns
};
datatable(Name:string, Data:string)
['Peter', 'Source-data']
| invoke LookupColumns(dynamic(['Country']))
Output
| Name | Data | Country |
|---|---|---|
| Peter | Source-data | USA |
忽略不存在的列
在执行查找后,使用运算符将列从表中保留,并指定要使用包含非存在的列名称的动态数组保留哪些列。
let LookupTable =
datatable(Name:string, Age:int, City:string, Country:string)
['Peter', 39, 'New York', 'USA'];
let LookupColumns = (Source:(Name:string), lookup_columns: dynamic) {
Source
| lookup LookupTable on Name
| project-by-names column_names_of(Source), lookup_columns
};
datatable(Name:string, Data:string)
['Peter', 'Source-data']
| invoke LookupColumns(dynamic(['Country', 'NonExistent']))
Output
| Name | Data | Country |
|---|---|---|
| Peter | Source-data | USA |