【问题标题】:Remove specific columns using Azure Data Factory使用 Azure 数据工厂删除特定列
【发布时间】:2020-09-07 16:44:37
【问题描述】:

我在 ADLS 中有一组文件。每个文件的列数不同。

文件 1 将包含以下列:Row_Number、Col_A、Col_B、null

文件 2 将包含以下列:Row_Number, Col_1, Col_2, Col_3, null

文件 3 将包含以下列:Row_Number、Col_A1、Col_A2、null

我的 ADLS 中将有 50 多个文件。 我需要删除每个文件中的第一列和最后一列,或者具体来说,我需要删除列名为 Row_Number 和 null 的列。

任何人都可以帮助我在派生列/选择中应该是什么表达式。

感谢您的帮助。

【问题讨论】:

  • 您的最后一个列标题是字符串“null”还是空白?即标题是这样的CSV文件吗? Row_Number, Col_A, Col_B,
  • 如果您的标头未像我上面的示例中那样定义,那么您将使用该文本分隔数据集作为数据流中的源,而无需在数据集中定义模式。相反,数据流源中的 Import Projection 和最后一列将使用类似“_c4”的语法定义。

标签: azure azure-data-factory


【解决方案1】:

我会使用 Select 规则来匹配条件:

name != 'Row_Number' && name != 'null' && left(name,2) != '_c'

输出列名是这样的:$$

【讨论】:

  • 谢谢马克。你能告诉我 left(name,2) != '_c' 过滤掉了什么吗?
  • 看看我上面的问题。如果您在 ADF 数据集中有一个空白标题,则数据流会给它一个垃圾名称,例如“_c4”。这条规则会过滤掉那些,因为你说你想过滤掉名为“null”的列,我不确定它们在源数据中的实际显示方式。
  • left(name,2) != '_c' 是黄金 - ADF 中的后期绑定/无模式方案当前使用_cN 标记跳过/空白/额外列,其中 N 为 1...所以这对清理很有帮助.当我跳过工作表中的列(没有标题名称,否则会生成错误)时,我将它与源数据集的范围设置为 A1:AZ10000 或源 Excel 文件中的其他一些大型“抓取”结合使用。跨度>
猜你喜欢
  • 2021-12-27
  • 2021-09-12
  • 2021-02-03
  • 2020-05-18
  • 2021-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-20
相关资源
最近更新 更多