首页 > 解决方案 > 我可以在 .create table control 命令中使用标量函数作为表名吗?

问题描述

我有一个存储函数,它根据一组参数生成身份名称,如下所示:

.create function 
with (docstring = 'Returns the table name for the specified data log provider.')
GetTableName(param1: string, param2: string)
{
    // Some string cleansing and concatenation
    let tableName = strcat(system, source);
    tableName
}

我想用这个函数来创建一个表。尝试了以下选项但没有成功:

.create table GetTableName('value1', 'value2') (Timestamp: datetime)
.create table [GetTableName('value1', 'value2')] (Timestamp: datetime)

我猜该命令期望表名是字符串文字。有没有办法做到这一点?

标签: azure-data-explorerkql

解决方案


创建表的控制命令不能包括查询执行(反之亦然:查询不能运行控制命令)。出于安全原因,存在限制。

您可以使用客户端代码并进行两次调用来实现该场景:1)派生表名 2)生成表创建命令并将其发送到服务器。


推荐阅读