Azure blob副本分区(按日期)

Azure blob副本分区(按日期),azure,parquet,azure-data-factory,azure-blob-storage,Azure,Parquet,Azure Data Factory,Azure Blob Storage,我在Azure blob存储中有如下文件: entity |- part001.parquet |- part002.parquet |- part003.parquet |- part004.parquet ... entity |- YYYY |-MM |- entity_YYYYMMDD.parquet ... |- YYYY |-MM |- entity_YYYYMMDD.parquet ...

我在Azure blob存储中有如下文件:

entity
|- part001.parquet
|- part002.parquet
|- part003.parquet
|- part004.parquet
...
entity
|- YYYY
    |-MM
        |- entity_YYYYMMDD.parquet
           ...
|- YYYY
    |-MM
        |- entity_YYYYMMDD.parquet
           ...
这个拼花地板数据有一个日期列,我们把它命名为
transaction\u date

我想制作一个Azure Data Factory管道,将所有这些数据迁移到另一个blob存储中,如下所示:

entity
|- part001.parquet
|- part002.parquet
|- part003.parquet
|- part004.parquet
...
entity
|- YYYY
    |-MM
        |- entity_YYYYMMDD.parquet
           ...
|- YYYY
    |-MM
        |- entity_YYYYMMDD.parquet
           ...
因此,这些文件将仅包含基于
事务\u date
的特定日期事务,以便以后更容易选择它们


使用ADF或其他Azure堆栈工具有什么方法可以做到这一点吗?

您需要的是动态分区或基于字段/列值的分区

我们使用Azure Datatricks来处理这些事情,如果需要重复出现,则通过Azure data factory v2计划笔记本。在笔记本中,您可以有一个pyspark脚本,如下所示(请注意,此代码只是一个模式,未经测试)

extractData=spark.read.parquet(“”)
extractData=extractData\
.withColumn(“交易年度”,年份(“交易日期”))\
.withColumn(“交易月”),month(“交易日”)
extractData.write.mode(“覆盖”)\
.分割人(“交易年”、“交易月”)\
.拼花地板(“”)
我们可以只使用azure数据工厂吗?假设您使用的是Azure Data Factory v2—与上面所述相比,基于字段值进行分区很难(并非不可能)


已经说过,Azure Data Factory映射数据流的公开预览——在封面下,它使用Azure DataRicks进行计算。我还没有测试/或玩过,也许你可以使用像这样的转换活动。但是使用Databricks也很简单。

谢谢@database,刚才在这里使用了您的脚本,在输出中我得到了奇怪的文件夹名称,比如year=yyy,month=MM。。。你是这样留着的吗?有没有一种方式可以像问题层次结构那样编写?不幸的是,这就是ApacheSpark分区的方式。“年”和“月”这两个词也随之而来。我们无法定制您需要的方式。在顺流阅读文件夹时,您需要处理它。