azure 根据2列数据将csv文件上传到单独的Parquet文件中

eit6fx6z  于 2023-06-24  发布在  其他
关注(0)|答案(1)|浏览(91)

我有一个CSV文件如下所示。

我想过滤ID和Combinations的不同值,并将每个组合保存为Parquet文件。例如:12888_1.parquet,13368_1.parquet等....我有几个不同的ID和6个组合[1,2,3,4,5,6]。
我知道复制活动可以保存任何文件为.parquet文件与自定义名称,但我不知道如何分组列和保存的parquet文件。任何帮助将不胜感激。

x3naxklr

x3naxklr1#

  • 您可以使用数据流和管道活动的组合来实现您的需求。使用数据流活动通过聚合转换获取唯一的id+combination值,使用接收器缓存,迭代此结果并将值传递给另一个数据流,以便根据这些值进行过滤和写入。
  • 下面是我所获取的一个示例文件数据:
id,combo,character
123,1,A
123,1,B
123,1,C
234,1,D
234,1,E
234,2,F
234,2,G
234,2,H
234,2,I
234,3,J
345,3,K
345,3,L
345,3,M
456,4,N
456,4,O
567,5,P
567,5,Q
567,6,R
678,6,S
  • 现在,我把它作为我的数据流源。我添加了一个聚合转换,并按id and combo对数据进行分组。使用任何聚合转换(无论如何,我们将在Map中排除它)。

  • 现在,只选择id和combo并使用sink cache。以下是数据流活动的调试输出:

  • 现在,使用以下动态内容对每个Activity进行迭代:
@activity('get unique id and combo').output.runStatus.output.sink1.value
  • 在每次迭代中将id和combo的值传递给新的数据流。以下是同一张图片:

  • 在新的数据流中,将所需的文件作为源。在以下条件下使用筛选器活动:
id==$id && combo==$combo

  • 使用以下动态内容和配置为每个小版本命名文件:
concat($id,'_',$combo,'.parquet')

  • 以下是将文件作为Parquet文件写入存储帐户的方式:

相关问题