用德鲁伊摄取 2 位数的年份?
Posted
技术标签:
【中文标题】用德鲁伊摄取 2 位数的年份?【英文标题】:Ingest 2-digit year with druid? 【发布时间】:2021-11-01 03:40:02 【问题描述】:我想提取格式为 MM/dd/yy 的日期(例如 2003 年 2 月 1 日的 02/01/03)。我不知道如何使用 joda 时间格式字符串来指定它,这似乎是 druid 需要的。
在 java 代码中,我可以通过为 joda DateTimeFormatter 指定一个基准年来做到这一点,但似乎没有办法只用一个格式字符串来做到这一点(这是 druid 摄取规范中可用的全部内容)。
【问题讨论】:
【参考方案1】:我做了很多试验和错误,发现了以下内容,但我仍然无法在任何地方找到记录。
两位数年份的“轴心点”是 40。40 岁以上的年份是 1900 年代,40 岁以下的年份是 2000 年代。这意味着:
3/4/97 是 1997 年 3 月 4 日 3/4/04 是 2004 年 3 月 4 日 3/4/40 是 2040 年 3 月 4 日 3/4/41 是 1941 年 3 月 4 日不要指定一位数的年份!这不会像您期望的那样工作;例如:
3/4/3 是公元 3 年的 3 月 4 日。如果您指的是 2003,则必须指定“03”。不要指定一个 y 格式的字符串!例如,格式字符串“M/d/y”应用于“3/4/03”时将被解释为公元 3 年的 3 月 4 日。
【讨论】:
【参考方案2】:您可以在 timestampSpec 中指定如何解析您的时间戳。
例如:
"timestampSpec":
"column": "timestamp",
"format": "MM/dd/yy"
另请参阅此页面:https://druid.apache.org/docs/latest/ingestion/ingestion-spec.html#timestampspec
【讨论】:
以上是关于用德鲁伊摄取 2 位数的年份?的主要内容,如果未能解决你的问题,请参考以下文章