You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Apache NiFi的Python ScriptTransformRecord将JSON时间戳转日期?

Apache NiFi 1.25 用Python ScriptTransformRecord转换JSON时间戳解决方案

配置前提

  • 确保处理器关联的Record Reader为JsonTreeReader,Record Writer为JsonRecordSetWriter。若JSON结构固定,可开启Reader的"Infer Schema"自动推断,或手动指定匹配的JSON Schema。

核心Python转换脚本

将以下脚本粘贴到ScriptTransformRecord的"Script"属性中,实现时间戳转日期格式(支持保留原timestamp字段并新增格式化日期,或直接替换):

import datetime

def transform(record):
    # 遍历posts历史数组
    posts_list = record.get("impressions_history_posts_seen", [])
    for post in posts_list:
        string_map = post.get("string_map_data", {})
        time_dict = string_map.get("Time", {})
        ts = time_dict.get("timestamp")
        
        if ts is not None:
            # 转换为本地时区的日期字符串,格式可自定义(如"%Y-%m-%dT%H:%M:%SZ"表示UTC ISO格式)
            formatted_date = datetime.datetime.fromtimestamp(ts).strftime("%Y-%m-%d %H:%M:%S")
            # 新增格式化日期字段
            time_dict["formatted_time"] = formatted_date
            # 若需替换原timestamp字段,取消下方注释
            # time_dict["timestamp"] = formatted_date
    return record

关键注意事项

  • 时区处理:若需UTC时间,替换日期转换代码为datetime.datetime.fromtimestamp(ts, datetime.timezone.utc).strftime("%Y-%m-%d %H:%M:%SZ")
  • 空值防护:使用get()方法带默认值,避免因字段缺失引发报错
  • 语法检查:Python脚本严格用4空格缩进,避免语法错误

常见报错排查

  • 字段找不到:检查JsonTreeReader的schema配置,确保与输入JSON结构匹配,或开启"Infer Schema"
  • Python语法错误:核对脚本缩进、括号配对,确保NiFi内嵌Python环境支持所用语法(NiFi 1.25基于Python 3.x)

内容的提问来源于stack exchange,提问作者user23343017

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 07:58:29