【问题标题】:how to Load data from last modified files within one day from subfolders Azure Data Flow如何从子文件夹 Azure 数据流中加载一天内最后修改的文件中的数据
【发布时间】:2021-06-10 15:35:22
【问题描述】:

我在 Azure 容器上有以下目录结构:

-dwh-prod
  -Main_Folder
   -2021-01
     -file1.parquet
   -2021-02
     -file2.parquet
     -file3.parquet

数据按年和月分区以创建子文件夹。在这些子文件夹中,我有我的数据文件。我只想将运行数据流管道后一天内添加的最新文件加载到我的数据流中。

我尝试在结束时间使用 currentUTC() 并减去一天 -> AddDays(currentUTC(), -1) 在源选项中提供的“按上次修改过滤”选项中的开始时间,但它不起作用。

我也尝试使用 currentTimestamp() 代替,但无济于事。

我该如何解决这个问题?

【问题讨论】:

  • 你能澄清一下这个问题吗?似乎由于文件夹是根据日期命名的,那么您应该能够定位文件夹而不必担心最后修改的过滤器。另外,您的源数据集是如何配置的?
  • 子文件夹由每天触发的管道填充,数据根据年份和月份进行分区。所以确实我想定位我拥有的最后一个文件夹,但是在那个文件夹中,我只想加载从最后一次管道运行创建的文件,特别是这些子文件夹是随着我们逐月动态创建的,并且年复一年。我用源数据集配置更新了问题。 @JoelCochran
  • @amro_ghoneim 我试过这个,它可以为我工作。当您按照屏幕截图所示进行操作时,它会在 Main_Folder 中为您提供所有 parquet 文件?
  • @amro_ghoneim 所以你的表达是对的。您的数据集路径似乎有问题。请确保您的路径正确。我注意到您的文件夹路径是数据集中的 MainFolder,但是您说您的文件存储在 Main_Folder 中。会不会是这个导致了你的错误?
  • @amro_ghoneim 您可以尝试在源选项中设置通配符路径设置(在您的第一个屏幕截图中)。尝试在其中输入:Main_Folder/*/*.parquet.

标签: azure-data-factory azure-data-flow


【解决方案1】:

你的表达是正确的。请在数据集中将文件夹路径从 MainFolder 更改为 Main_folder,并在 Source 选项中将 Main_Folder/*/*.parquet 设置为通配符路径。然后就可以了。

【讨论】:

    【解决方案2】:

    我认为您的解决方案很接近,但我不确定文件夹名称是否足够。我也不熟悉“currentUTC”。正确的函数应该是utcNow

    以下是我将如何解决此问题的概述。

    源数据集

    为子文件夹添加参数(年-月):

    然后将文件夹路径设置为如下表达式:

    管道

    您可以传入子文件夹或在运行时计算它。我的偏好是将其作为参数传递:

    然后我会添加变量来计算开始和结束时间。由于您每天都在运行此程序,因此我一定会强制将时间设置为一天的开始。这应该根据运行时间处理任何变幻莫测。另外,我会使用内置的getPastTime 函数:

    现在在您的源配置中使用这些对象:

    【讨论】:

    • 正如 OP 的屏幕截图所示,他正在使用数据流。所以使用currentUTC()是正确的。
    • 谢谢@SteveZhao - 我完全错过了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    • 2021-06-24
    • 2020-09-06
    • 2021-10-25
    • 1970-01-01
    相关资源
    最近更新 更多