Google Dataprep日期min()返回长序列号,无法转换为日期求助
解决Google Dataprep中min()返回时间戳的问题
嘿,我之前也踩过这个坑!那个看起来像乱码的长序列号(比如1304985600000)其实是毫秒级Unix时间戳——Dataprep在对日期字段执行聚合函数(比如min())时,偶尔会默认输出这种底层的时间表示,确实很不友好。下面是几个快速解决的方法:
方法1:聚合后直接转换时间戳为日期
如果已经得到了时间戳字段,可以用TO_DATE()函数把它转成可读的日期格式。注意因为是毫秒级时间戳,需要先除以1000转换成秒级:
TO_DATE(你的时间戳字段/1000)
比如针对你给出的例子:TO_DATE(1304985600000/1000)会返回2011-05-09(这个时间戳对应的日期)。
方法2:先标准化日期字段类型再聚合
如果原始日期字段的类型不是「日期/时间」,Dataprep可能会在聚合时自动转成时间戳。你可以先把原始字段转成正确的日期类型:
- 如果原始字段是字符串格式,用
PARSE_DATE()指定格式转换,比如:PARSE_DATE("%Y-%m-%d", 原始日期字段) - 如果是其他格式的时间表示,用
TO_DATE()直接转换。
转换完成后,再对这个标准化后的日期字段执行min(),得到的结果就是正常的日期格式了。
方法3:用可视化界面一键转换
不想写函数的话,用Dataprep的界面操作更简单:
- 选中那个时间戳字段,右键点击「更改数据类型」
- 选择「日期/时间」类型,在弹出的配置窗口里,把「输入格式」设置为「Unix时间戳(毫秒)」
- 确认后,字段就会自动转换成可读的日期格式啦
另外小提示:如果转换后还是有问题,可以检查一下原始日期字段有没有空值或者格式不统一的记录,这些异常值可能会导致聚合结果异常。
内容的提问来源于stack exchange,提问作者Aaron Harris
相关产品推荐
相关产品推荐

