【问题标题】:How to extract key-value pairs from CSV using Talend如何使用 Talend 从 CSV 中提取键值对
【发布时间】:2020-07-01 07:56:09
【问题描述】:

我的 CSV 文件中有一列的数据为:

          `column1`
    
   row1 : {'name':'Steve Jobs','location':'America','status':'none'}
   row2 : {'name':'Mark','location':'America','status':'present'}
   row3 : {'name':'Elan','location':'Canada','status':'present'}

我希望该列的输出为:

`name`       `location`     `status`   

Steve jobs    America        none  
Mark          America        present
Elan          Canada         present

但有时我的行值类似于{'name':'Steve Jobs','location':'America','status':'none'},{'name':'Mark','location':'America','status':'present'}

请帮忙!

【问题讨论】:

    标签: etl talend


    【解决方案1】:

    您必须使用tMaptExtractDelimitedFields 组件。

    流动,

    下面是一步一步的解释,

    1. 原始数据-row1 : {'name':'Steve Jobs','location':'America','status':'none'}
    2. 使用下面的函数对大括号内的值进行子串化 row1.Column0.substring(row1.Column0.indexOf("{")+1, row1.Column0.indexOf("}")-1)
      现在结果是 - 'name':'Steve Jobs','location':'America','status':'none'

    3. 使用 tExtractDelimitedFields 将单列提取为多列。由于列被分隔为,,因此分隔符应以逗号形式提供。我们在数据中有 3 个字段,因此在组件模式中创建 3 个字段。下面是tExtractDelimitedFields组件配置的截图

    现在的结果是,

         name             location               status
    'name':'Steve Jobs'  'location':'America'   'status':'none'
    'name':'Mark'        'location':'America'   'status':'present'
    'name':'Elan'        'location':'Canada'    'status':'present'
    
    1. 再次使用另一个tMap,替换数据中的列名和单引号,

       row2.name.replaceAll("'name':", "").replaceAll("'", "") 
       row2.location.replaceAll("'location':", "").replaceAll("'", "") 
       row2.status.replaceAll("'status':", "").replaceAll("'", "") 
      
      
      
      
    2. 你的最终结果如下,

    【讨论】:

    • 嘿,再次感谢。你知道如何使用 Talend 将毫秒转换为时间戳吗?
    • 你能ping准确的值吗,这样可以试试
    • 我在一列中有超过 100 行。样本值:1587740000000、1590600000000、1588880000000、1589040000000、1589040000000。
    • 您的预期结果是什么?我的意思是您需要哪种格式?
    • 1587740000000 = 24-04-2020 20:23:20
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多