Apache nifi NIFI:将SQL查询中的每月转储作为CSV文件摄取到SFTP服务器中

Apache nifi NIFI:将SQL查询中的每月转储作为CSV文件摄取到SFTP服务器中,apache-nifi,Apache Nifi,我希望使用SQL查询将数据存储为各自的每月CSV,并将其存储到SFTP服务器中 例如,我的查询是: select fooId, bar from FooBar where query_date>=20180101 and query_date<20180201 --(for the month of January 2018) 请告知我如何推进这项工作。对于这种情况,我可以想出三种方法 方法1:使用MD5函数执行SQL查询以获取fooId的哈希值: 流量: Genera

我希望使用SQL查询将数据存储为各自的每月CSV,并将其存储到SFTP服务器中

例如,我的查询是:

    select fooId, bar from FooBar 
where query_date>=20180101 and query_date<20180201 --(for the month of January 2018)

请告知我如何推进这项工作。

对于这种情况,我可以想出三种方法

方法1:使用MD5函数执行SQL查询以获取fooId的哈希值:

流量:

  • GenerateFlowFile//添加startdate、enddate属性

    startdate -> ${now():format("yyyyMM"):minus(1):append("01")}
    enddate   -> ${now():format("yyyyMM"):append("01")}
    
    startdate -> ${now():format("yyyyMM"):minus(1):append("01")}
    enddate   -> ${now():format("yyyyMM"):append("01")}
    
  • ExecuteSQL//选择md5(fooId)foodId,从FooBar中选择bar,其中

    query_date>=${startdate} and query_date<${enddate}
    
  • ExecuteSQL//从FooBar中选择fooId、bar

    其中query_date>=${startdate}和query_date 根据您的源更改上述查询,以获取列的md5哈希值

  • ConvertRecord//将Avro格式转换为Json格式

  • SplitJson//将json数组拆分为单独的流文件
  • EvaluateJsonPath//将所有键值提取为flowfile属性,fooId键除外
  • EvaluateJsonPath//使用fooId值覆盖流文件内容
  • HashContent//使用MD5算法获取流文件内容的哈希值
  • AttributesToJson//使用新的哈希md5值重新创建json消息
  • MergeContent//使用碎片整理策略创建json数组
  • UpdateAttribute//更改文件名
  • putstp///存储该文件
  • 另一种方法是编写一个脚本,该脚本可以解析json数组消息,为
    fooId
    键创建
    md5 hashvalue
    ,并使用新的md5 hashvalue编写json消息


    我上传了两种方法和模板,保存并上传到NiFi实例以供更多参考,并使用最适合您案例的方法。

    对于本案例,我可以想到三种方法

    方法1:使用MD5函数执行SQL查询以获取fooId的哈希值:

    流量:

  • GenerateFlowFile//添加startdate、enddate属性

    startdate -> ${now():format("yyyyMM"):minus(1):append("01")}
    enddate   -> ${now():format("yyyyMM"):append("01")}
    
    startdate -> ${now():format("yyyyMM"):minus(1):append("01")}
    enddate   -> ${now():format("yyyyMM"):append("01")}
    
  • ExecuteSQL//选择md5(fooId)foodId,从FooBar中选择bar,其中

    query_date>=${startdate} and query_date<${enddate}
    
  • ExecuteSQL//从FooBar中选择fooId、bar

    其中query_date>=${startdate}和query_date 根据您的源更改上述查询,以获取列的md5哈希值

  • ConvertRecord//将Avro格式转换为Json格式

  • SplitJson//将json数组拆分为单独的流文件
  • EvaluateJsonPath//将所有键值提取为flowfile属性,fooId键除外
  • EvaluateJsonPath//使用fooId值覆盖流文件内容
  • HashContent//使用MD5算法获取流文件内容的哈希值
  • AttributesToJson//使用新的哈希md5值重新创建json消息
  • MergeContent//使用碎片整理策略创建json数组
  • UpdateAttribute//更改文件名
  • putstp///存储该文件
  • 另一种方法是编写一个脚本,该脚本可以解析json数组消息,为
    fooId
    键创建
    md5 hashvalue
    ,并使用新的md5 hashvalue编写json消息

    我上传了两种方法和模板,保存并上传到NiFi实例以供更多参考,并使用最适合您的案例的方法