You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kusto表中添加唯一约束以避免插入重复数据

在Kusto中阻止重复数据插入的方案

Kusto没有传统关系型数据库里那种直接添加唯一约束的语法,不过可以通过以下两种核心方式实现阻止重复数据插入的需求:

1. 配置唯一键策略(推荐)

这是Kusto官方提供的内置机制,让系统自动处理重复数据。

创建表时定义唯一键策略

如果是新建表,可直接在创建时指定唯一标识字段和约束模式:

.create table MyTable (Id: string, Value: int) with (uniqueKeyPolicy = { keys: ['Id'], enforcement: 'Strict' })
  • keys:指定作为唯一标识的字段,支持多个字段组合,比如['Id', 'Timestamp']
  • enforcement:约束模式
    • Strict:遇到重复唯一键的数据时,整个写入操作直接失败,不会插入任何数据
    • Relaxed:自动忽略重复的唯一键数据,保留已存在的记录,新的重复数据会被丢弃(默认模式)

给已有表添加唯一键策略

如果表已经存在,用以下命令修改策略:

.alter table MyTable policy uniquekey @'{"Keys": ["Id"], "Enforcement": "Strict"}'

2. 写入前手动过滤重复数据

针对一次性导入数据的场景,可以先过滤掉表中已存在的记录,再执行写入:

-- 模拟待插入的新数据
let newData = datatable(Id:string, Value:int)
[
    "1", 100,
    "2", 200
];
-- 过滤掉已存在的Id后写入表
newData
| where Id !in (MyTable | project Id)
| ingest into table MyTable

两种方式对比:唯一键策略适合持续、自动的写入场景,无需每次手动处理;手动过滤适合临时、一次性的数据导入,灵活性更高。

内容的提问来源于stack exchange,提问作者Sravani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 02:20:06