无法在 Kusto 中的用户定义函数中包含命令



我正在尝试创建一个函数,该函数将接受标签名称和日期时间值,并将范围放在具有该标签的特定表中,然后将具有相同标签和输入日期时间值的新记录引入该表中 - 有点"更新"模拟。我不担心性能,它只是保存元数据——最多可能 20-30 行。

所以这就是创建表的样子:-

.create table MyTable(sometext:string,somevalue:datetime)

下面显示的是我的函数创建步骤,它失败了:-

.create-or-alter function MyFunction(arg_sometext:string,arg_somedate:datetime) 
{
.drop extents <| .show table MyTable extents where tags has arg_sometext;
.ingest inline into table MyTable with (tags="[arg_sometext]") <| arg_somedate
} 

所以你可以看到我正在尝试做一些简单的事情 - 我怀疑 Kusto 不允许在函数中使用命令。是否有任何解决方法可以实现这一目标?

通常:Kusto 要求控制命令以点 (.) 开头,并且这必须是命令文本中的第一个字符。由于查询、函数等不以点开头,因此它们无法调用控制命令。

这是一个有意的限制,可防止各种代码注入攻击。通过实施此规则,Kusto 可以轻松保证任何不以点开头的查询都只能对数据和元数据具有读取访问权限,而永远无法更改它们。

具体来说:关于您的具体情况:

  • 我假设它是自动触发的(即使您确实可以选择创建函数),这表明您应该能够使用 Kusto 的 API/客户端库和简单的脚本/应用程序来实现您的目标。
  • 另一种,也许更好的方法是重新考虑是否确实需要删除或更新特定记录,或者可以使用summarize arg_max()仅查询记录的最新"版本"(您还可以创建一个函数,该函数封装该逻辑并覆盖表,方法是使用表的名称命名函数)。

最新更新