数据工厂 v2:数据湖增量复制 activity

Data Factory v2: Data Lake incremental copy activity

在我的 Azure Data Lake 目录 ingest 中,我有以时间戳命名的子目录:

ingest/1510395023/file.tsv
ingest/1510425023/file.tsv
ingest/1510546210/file.tsv
...

Azure Data Factory v2 中复制 activity(Data LakeSQL Server),如何将 Data Lake 目录过滤为大于指定时间戳的目录?

假设我将把已经复制的时间戳记录到SQL服务器,在下一个管道运行,我只想复制增量基于 查找 Activity.

的新目录

数据工厂 文档参考 logical functions,但我不明白如何在这种情况下实现它们。

或者:如果逻辑比较过滤器在文件名上可用,而不是在目录上,那也会有帮助。

注意:我也想加载历史数据,所以只过滤大于或等于now的时间戳是不够的。

我假设您有一个 Data Lake Analytics 帐户。

使用U-SQL activity,您可以将目标文件复制到单个文件,然后您可以使用副本activity.

复制该文件

您可以通过提取 file set 并按其虚拟列对其进行过滤来完成此操作。

@timestamp字符串作为输入参数,它是通过查找activity获得的并且是已经处理的最新时间戳:

@delta = 
    SELECT Col1, Col2 
    FROM(
        EXTRACT 
            [Col1] string,
            [Col2] string,
            [Timestamp] string
        FROM "ingest/{Timestamp}/file.tsv"
        USING Extractors.Tsv(skipFirstNRows : 1/* change if the header is not part of the file*/)
    ) AS T
    WHERE long.Parse([Timestamp]) > long.Parse(@timestamp);


OUTPUT @delta
TO "delta/file.tsv"
USING Outputters.Tsv(outputHeader : true);

从那里您可以将 "delta/file.tsv" 复制到您的数据库。