Data Factory v2:Data Lake增量复制活动

时间:2018-01-30 09:28:15

标签: sql-server azure-data-factory azure-data-lake

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

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

Azure Data Factory v2 复制活动( Data Lake SQL Server )中,如何过滤 Data Lake 目录是否大于指定的时间戳?

假设我将已经复制的时间戳记录到 SQL Server 中,并且在下一次管道运行时,我只想根据查找活动

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

或者:如果文件名上有逻辑比较过滤器,而不是目录,那么这也是有用的。

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

1 个答案:

答案 0 :(得分:2)

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

使用U-SQL活动,您可以将目标文件复制到单个文件,然后可以使用复制活动进行复制。

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

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

@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”复制到你的数据库。