【问题标题】:Ingest 2-digit year with druid?用德鲁伊摄取 2 位数的年份?
【发布时间】:2021-11-01 03:40:02
【问题描述】:

我想提取格式为 MM/dd/yy 的日期(例如 2003 年 2 月 1 日的 02/01/03)。我不知道如何使用 joda 时间格式字符串来指定它,这似乎是 druid 需要的。

在 java 代码中,我可以通过为 joda DateTimeFormatter 指定一个基准年来做到这一点,但似乎没有办法只用一个格式字符串来做到这一点(这是 druid 摄取规范中可用的全部内容)。

【问题讨论】:

    标签: jodatime 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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多