我有一个数据流,从Parquet文件中读取,进行一些过滤,然后加载到Delta中。数据流将多次运行,我不希望在我的Delta中重复数据。为了保护这一点,我想实现一个删除-插入机制-查找传入数据的最小和最大日期,并删除目标(delta)中属于此范围内的所有数据。一旦删除,所有过滤的传入数据将被插入到delta湖中。
从文档中,我看到需要在Alter中添加行级的策略,以标记该特定行以便删除。我添加了“删除-如果条件为- 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的数据预览中,当确实存在属于该范围的记录时,所有行都被标记为插入,0标记为删除。
我怀疑删除-如果条件不符合我想要的方式。在这种情况下,如何实现以Delta为目标的数据流中的数据范围之间的删除?
发布于 2022-01-03 18:55:55
您需要告诉ADF如何处理时间戳的其他部分(它还不是日期类型)。试试这个:
toString(toTimestamp('2021-12-22T01:49:57',‘yyyy dd’ss:MM:ss‘),'MM/dd/yyyy')
https://stackoverflow.com/questions/70573429
复制