如何解决在更新策略处于活动状态时更新更新策略功能
假设我们有一个目标表 TargetTable
,我们有 N 个不同的源表,例如 SourceTable1,SourceTable2,...,SourceTableN
。现在让我们针对 TargetTable 定义一个更新策略,以便每个源表都通过此更新策略提供给目标表。常见的查询是一个固定的函数,叫做TargetTable_loader()
。因此 .show table TargetTable policy update
命令的输出将如下所示:-
[
{
"IsEnabled": true,"Source": "SourceTable1","Query": "TargetTable_loader()","IsTransactional": true,"PropagateIngestionProperties": false
},{
"IsEnabled": true,"Source": "SourceTable2",.
.
.
.
{
"IsEnabled": true,"Source": "SourceTableN","PropagateIngestionProperties": false
}
]
现在,对于这种情况,我有以下两个问题。
-
由于它是所有 (Source,Target) 对的通用函数,有没有办法让函数使用一些通用变量来引用输入表?因为如果函数引用特定的表名,它将不再是通用的。同时,如果我必须创建 N 个不同的函数,每个函数都将引用不同的源表,这将是多余的。有没有办法用输入表名参数化这个函数?像这样:-
.create-or-alter function TargetTable_loader(InputTable:string) { InputTable | ..... }
-
其次,如果我有这样一个通用函数来将所有源表映射到目标表,如初始示例中所示 - 并且说数据正在使用流连续摄取到所有源表中,那么会发生什么?如果我突然更新通用函数的定义会发生什么?当然,我会确保即使是新的函数定义也是有效的。但是我的问题更集中在用于查询这N个更新策略的函数的突然更新是否会影响更新策略的执行,导致失败仅仅因为它是突然更新的事实。
解决方法
答案:
- 您可以定义一个接收表名作为字符串参数的函数,然后像这样引用它
table(tableName)
:
.create-or-alter function MyFunction(TableName: string) {
table(TableName)
| ...
}
- 更新用于更新策略的函数不会导致失败(只要结果架构保持不变)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。