【问题标题】:Data Factory v2: Data Lake incremental copy activity数据工厂 v2:数据湖增量复制活动
【发布时间】:2018-01-30 09:28:15
【问题描述】:

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

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

Azure 数据工厂 v2 复制活动(Data LakeSQL Server)中,如何过滤 Data Lake 目录到那些大于指定时间戳的目录?

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

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

或者:如果对文件名(而不是目录)提供逻辑比较过滤器,那也会很有帮助。

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

【问题讨论】:

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


    【解决方案1】:

    我假设您有一个 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”复制到您的数据库中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-06
      • 1970-01-01
      • 2018-08-01
      • 2022-01-04
      • 1970-01-01
      • 1970-01-01
      • 2022-11-17
      • 1970-01-01
      相关资源
      最近更新 更多