Dhi*_*raj 4 kql azure-data-explorer
有没有办法完全克隆 Kusto 中的表,使其具有原始表的所有范围?即使不可能保留扩展区,至少有一种高效的方法可以将表复制到新表。我尝试了以下方法:-
.set new_table <| existing_table;
Run Code Online (Sandbox Code Playgroud)
它一直运行并出现超时错误。有没有办法进行复制,以便 Kusto 引擎识别出这只是一个转储副本,因此它不会使用 Kusto 引擎,而只会从后端执行简单的 blob 复制,并将新表指向复制的 blob,从而绕过整个过程Kusto加工路线?
1.可以使用您提到的命令将一个表的架构和数据复制到另一个表(复制数据的另一个选项是将其内容导出到云存储中,然后使用 Kusto 的摄取 API或使用它的工具摄取结果存储工件,例如LightIngest或ADF)
当然,如果源表有大量数据,那么您可能希望将此命令拆分为多个命令,每个命令处理源数据的一个子集(您可以对其进行“分区”,例如按时间)。
下面只是一个示例(这显然取决于源表中有多少数据):
.set-or-append [async] new_table <| existing_table | where ingestion_time() > X and ingestion_time() < X + 1h
.set-or-append [async] new_table <| existing_table | where ingestion_time() >= X+1h and ingestion_time() < X + 2h
...
Run Code Online (Sandbox Code Playgroud)
请注意,这async是可选的,是为了避免潜在的客户端超时(默认为 10 分钟后)。命令本身将继续在后端运行长达 60 分钟的不可配置超时(尽管强烈建议避免此类长时间运行的命令,例如通过执行上面提到的“分区”)。
2.对于您的另一个问题:没有选项可以在不重新摄取数据的情况下在表之间复制数据(一个范围/数据分片当前不能属于多个表)。
3.如果您需要将表 T1 中的数据连续“复制”到表 T2 中,并且 T1 和 T2 位于同一数据库中,则可以使用更新策略来实现。