project-by-names operator

适用于:✅Azure 数据资源管理器Azure MonitorMicrosoft Sentinel

按输入表的名称、动态数组或名称模式选择并重新排序列的子集。

Syntax

T| project-by-namesColumnSpecifier [, ...]

详细了解 语法约定

Parameters

Name 类型 Required Description
T string ✔️ 要从中删除列的表格输入。
ColumnSpecifier string ✔️ 要保留和重新排序的列名称、列名称的动态数组或列通配符模式。

Note

  • 结果中的列根据指定或匹配的顺序进行排序。
  • 安全忽略与任何现有列不匹配的列名称。
  • 通配符 \ 可用于按名称模式匹配多个列。
  • ColumnSpecifier 可以包含 column_names_of(Table) 表达式的结果,该表达式从指定表中返回列名的动态数组。
  • ColumnSpecifier 参数不支持子查询或标量表达式(如 toscalar()。
  • 对于相关功能:

Returns

一个表,仅包含 ColumnSpecifier 参数中指定的列(按指定顺序)。 所有未指定的列都从结果中排除。

Examples

以下示例演示如何使用 project-by-names 运算符从表中选择和重新排序列。 输入表有四列: NameAgeCityCountry

保留并重新排序特定列

使用运算符仅 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