azure Kusto查询语言:用户定义函数上的语义错误

ocebsuys  于 2023-01-21  发布在  其他
关注(0)|答案(1)|浏览(421)

您好StackOverflow社区。
我最近想出了一个有趣的教程/游戏关于KQL,一个我正在尝试解决的难题提出的网站。其中之一是利用以下函数来显示Map

.create-or-alter function with (docstring = "Virtual tour starts here", skipvalidation = "true") VirtualTourLink(lat:real, lon:real) { 
    print Link=strcat('https://www.google.com/maps/@', lat, ',', lon, ',4a,75y,32.0h,79.0t/data=!3m7!1e1!3m5!1s-1P!2e0!5s20191101T000000!7i16384!8i8192')}

我正尝试将此函数与一些已知值一起使用(请参见下面的示例)

nyc_trees
| invoke VirtualTourLink(lat=40.6777207, lon=-73.86205414)

然而,KQL编译器提示一个错误,指出函数只接受两个参数。你知道为什么会发生这种情况吗?

o7jaxewo

o7jaxewo1#

函数的主体基本上是一个 print 语句。

  • print* 是表格运算符(产生单行);因此,您应该将函数视为表:
VirtualTourLink(lat=40.6777207, lon=-73.86205414)

| 链接|
| - ------|
| https://www.google.com/maps/@40.6777207,-73.86205414,4a,75y,32.0h,79.0t/data=!3m7!1e1!3m5!1s-1P!2e0!5s20191101T000000!7i16384!8i8192|
另外,如果你想在表的行上执行函数,你可以这样重新定义它(去掉 print,这样函数将返回一个标量):

.create-or-alter function with (docstring = "Virtual tour starts here", skipvalidation = "true") VirtualTourLink(lat:real, lon:real) { 
    strcat('https://www.google.com/maps/@', lat, ',', lon, ',4a,75y,32.0h,79.0t/data=!3m7!1e1!3m5!1s-1P!2e0!5s20191101T000000!7i16384!8i8192')}

用法如下所示:

nyc_trees
| sample 5
| project tree_id
         ,latitude
         ,longitude
         ,VTL = VirtualTourLink(lat=latitude, lon=longitude)

| 树标识|纬度|经度|虚拟磁带库|
| - ------|- ------|- ------|- ------|
| 小行星180683|40.72309177美元| -73.84421522 |https://www.google.com/maps/@40.72309177,-73.84421522,4a,75y,32.0h,79.0t/data=!3m7!1e1!3m5!1s-1P!2e0!5s20191101T000000!7i16384!8i8192|
| 小行星200540|小行星40.794| -73.81867946 |https://www.google.com/maps/@40.79411067,-73.81867946,4a,75y,32.0h,79.0t/data=!3m7!1e1!3m5!1s-1P!2e0!5s20191101T000000!7i16384!8i8192|
| 小行星204026|四○七一七五八零七四| -73.9366077 |https://www.google.com/maps/@40.71758074,-73.9366077,4a,75y,32.0h,79.0t/data=!3m7!1e1!3m5!1s-1P!2e0!5s20191101T000000!7i16384!8i8192|
| 小行星204337|四○七一三五三七四九| -73.93445616 |https://www.google.com/maps/@40.71353749,-73.93445616,4a,75y,32.0h,79.0t/data=!3m7!1e1!3m5!1s-1P!2e0!5s20191101T000000!7i16384!8i8192|
| 小行星189565|四○六六六七七七七七六| -73.97597938 |https://www.google.com/maps/@40.66677776,-73.97597938,4a,75y,32.0h,79.0t/data=!3m7!1e1!3m5!1s-1P!2e0!5s20191101T000000!7i16384!8i8192|
Fiddle

相关问题