数据工厂 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 Lake 到 SQL 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" 复制到您的数据库。
在我的 Azure Data Lake 目录 ingest
中,我有以时间戳命名的子目录:
ingest/1510395023/file.tsv
ingest/1510425023/file.tsv
ingest/1510546210/file.tsv
...
在 Azure Data Factory v2 中复制 activity(Data Lake 到 SQL 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" 复制到您的数据库。