如何解决从 kusto 函数动态返回列
我将一组遥测数据存储在以下格式的表中。让我们将此表称为 RawTelemetryData
device_id | TIME | ABC | DEF | GHI | LMN |
---|---|---|---|---|---|
123 | 2021-04-20 00:00:00.0000000 | 1 | 2 | 3 | 4 |
121 | 2021-04-20 00:00:00.0000000 | 1 | 2 | 3 | 4 |
上表包含每 10 秒来自多个 IoT 设备的遥测数据。我有一个客户端程序需要根据 device_id 选择不同的列。
例如。对于 device_id 123,客户端程序需要 ABC,GHI 列。至于 device_id 121 客户端程序期望只有 ABC,DEF。
最初我正在考虑编写一个接受 device_id 和要选择的列的函数。像下面这样。其中第一个参数是设备 ID,第二个参数是要选择的列。假设我需要选择设备 ID 123 的 ABC,GHI 会调用这样的函数。
方法一
getDataBydeviceid(123,"ABC,GHI") 这个函数应该只投影ABC和GHI
.create-or-alter function with (folder = "getData",skipvalidation = "true") getDataBydeviceid(device_id:int,columns:string) {
}
但我无法让它工作。
方法 2
在这种方法中,我在单独的表中为每个 device_id 预先配置了列。在这种情况下,我尝试编写一个仅接受设备 ID 和项目列的函数,这些列在下表中配置。
DEVICE_COLUMN_MAPPING_TABLE
device_id | 列 |
---|---|
123 | ABC |
123 | DEF |
123 | GHI |
123 | LMN |
121 | ABC |
121 | DEF |
121 | GHI |
.create-or-alter function with (folder = "getData",skipvalidation = "true") getDataBydeviceid(device_id:int) {
//program should look at DEVICE_COLUMN_MAPPING_TABLE for colums for this particular device id and project only that.
}
但不幸的是,我无法让它也起作用。 :(
我想了解是否有可能使上述任何一种方法起作用。如果没有,我只有一个我能想到的解决方案,那就是使用正确的项目语句构建查询源程序(一个java程序,调用kusto函数)基于device_id并调用得到结果。我试图避免这样做,并将所有逻辑都放在 ADX 本身上。任何其他解决问题的方法也欢迎:)
解决方法
这是基于您的第二种方法的解决方案:
@app.on_event("startup")
def startup_event():
public_key = None
try:
with open(PUBLIC_KEY_FILE) as public_key_file:
public_key = public_key_file.read()
except Exception as f_error:
logger.exception(f_error)
raise SomeException()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。