我们使用 Azure 数据流在 Azure SQL 数据仓库中生成数据表的历史记录。在数据流中,我们在所有列上使用 md5 或 sha1 函数来生成唯一的行指纹以检测记录的变化,或识别已删除/新的记录(相当标准的历史技术)。
对于某些数据表,我们有包含十进制值的列(例如数据类型 DECIMAL(18,1))。如果我查看在一个整数、一个文本和一个十进制列上生成的 md5 哈希,我希望这三行在 Azure 数据流中生成不同的哈希:
但是,这三行得到完全相同的哈希,这意味着我们无法检测到 [id] = 1 的记录的字段 [value] 的变化。如果十进制值作为文本存储在数据库中 (或在 md5 函数中转换为字符串),哈希值不同:
这导致我们的一些历史表没有准确记录数据,其中只有小数列中的值发生了变化。
我的问题:有人知道这是否是 Azure 数据流的“设计”,还是需要由 Microsoft 修复的错误?