如何定义KQL函数:仅依赖必填列且保留输入表所有列
解决KQL函数保留输入表全列同时指定必填列的问题
你可以通过混合表约束语法实现需求,在函数参数里明确指定name和value为必填列,同时用*表示保留输入表的其他所有列。具体修改如下:
修改后的函数定义
.create-or-alter function with (docstring = "decode hex-strings from table", folder = "jobs") decode_hex_from_table(T:(name:string, value:string, *), _output_tablename:string) { let statistics_configs = database("statistics").statistics_configs | project name=src_name, description, value_type, start_byte, num_elements, element_length, little_endian, factor; let jobs_decoded = materialize( T | join kind=leftouter statistics_configs on name | (...more transformations) ); table(_output_tablename) }
原理说明
T:(name:string, value:string, *)是KQL支持的表参数定义方式:- 前两项
name:string和value:string强制要求输入表必须包含这两个指定类型的列,确保关联逻辑能正常执行; - 末尾的
*表示保留输入表中除必填列之外的所有其他列,不管输入表结构如何变化,只要有name和value就能正常调用,且不会丢失原有数据列。
- 前两项
这样修改后,函数就能适配所有包含name和value列的不同结构表,同时保留输入表的全部列,满足后续转换需求。
内容的提问来源于stack exchange,提问作者Thomas
相关产品推荐
相关产品推荐

