流畅地将类型分配给过滤器中的新字段

时间:2016-09-26 21:53:40

标签: ruby filter fluentd

我正在流利地从一组传感器中推送一些数据。我推送的数据包含一个“时间戳”字段(以毫秒为单位),我需要在其日期组件(年,月等等)中爆炸。我正在使用过滤器在推送数据时执行此操作,因此通过一些ruby代码我可以轻松地分解时间戳,例如。

<filter *>
  @type record_transformer
  enable_ruby
  <record>
    year ${Time.at(Integer(record['timestamp'])/1000.0).strftime("%Y")}
    monthnumber ${Time.at(Integer(record['timestamp'])/1000.0).strftime("%-m")}
    monthname ${Time.at(Integer(record['timestamp'])/1000.0).strftime("%B")}
    daynumber ${Time.at(Integer(record['timestamp'])/1000.0).strftime("%-d")}
    dayname ${Time.at(Integer(record['timestamp'])/1000.0).strftime("%A")}
    hour ${Time.at(Integer(record['timestamp'])/1000.0).strftime("%-k")}
    minutes ${Time.at(Integer(record['timestamp'])/1000.0).strftime("%-M")}
    seconds ${Time.at(Integer(record['timestamp'])/1000.0).strftime("%-S")}
  </record>
</filter>

我的问题是它将在json中包含的新字段被赋予字符串类型,而对于一些我严格需要整数(例如,年份,月份号,日期号等)。有没有办法告诉流利者这些字段必须作为整数添加?

我尝试过:

year ${Integer(Time.at(Integer(record['timestamp'])/1000.0).strftime("%Y"))}

但它不起作用。

1 个答案:

答案 0 :(得分:0)

根据documentation here,您可以使用选项auto_typecast true,它将为每个字段分配Ruby代码中定义的类型。