首页 文章

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

提问于
浏览
1

在我的 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,但我不明白如何在此方案中实现它们 .

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

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

1 回答

  • 2

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

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

    您可以通过提取file set并通过其虚拟列对其进行过滤来实现此目的 .

    @timestamp string是输入参数,它是通过查找活动获得的,它是已处理的最新时间戳:

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

相关问题