我有一个数据流,它从Parquet文件中读取,进行一些过滤,然后加载到Delta Lake中。数据流会运行多次,我不希望在我的三角洲湖中有重复的数据。为了保护这一点,我想实现一个删除-插入机制——找到传入数据的最短和最长日期,并删除目标(delta(中属于此范围的所有数据。一旦删除,所有过滤后的传入数据都将插入三角洲湖中。
从文档中,我看到我需要在Alter row Tx中添加行级别的策略,以标记该特定行进行删除。我添加了Delete If条件作为-between(toDate(date, 'MM/dd/yyyy'), toDate("2021-12-22T01:49:57", 'MM/dd/yyyy'), toDate("2021-12-23T01:49:57", 'MM/dd/yyyy'))
,其中日期是传入数据中的一列。
然而,在Alter Row Tx的数据预览中,当确实存在属于该范围的记录时,所有行都被标记为插入,0被标记为删除。
我怀疑Delete If条件没有按我希望的方式工作。在这种情况下,我如何在以Delta为目标的数据流中实现数据范围之间的删除?
您需要告诉ADF如何处理时间戳的其他部分(它还不是日期类型(。试试这个:
toString(toTimestamp('2021-12-22T01:49:57],'yyyy-MM-dd''HH:MM:ss'(,'MM/dd/yyyy'(