类型推导规则

更新时间:
复制为 MD 格式

本文将向您介绍Flink CDC数据摄入作业在进行分库分表合并及表结构演化时,如何合并不同类型的列并推导结果列的类型。

分库分表字段合并规则

有时,不同上游分表中的同名列可能具有不同的类型。您可以使用route语法将这些表合并后写入到同一张下游表中。此时数据摄入作业会根据下面的树状结构,寻找刚好可以覆盖二者的公共类型,作为下游表中的列类型。

image

以下类型在合并时具有额外的规则:

  • 时间类型字段 TIME、TIMESTAMP、TIMESTAMP_TZ 和 TIMESTAMP_LTZ 具有可选的精度值。在合并结果仍然为时间类型时,其精度为上游时间字段的最大精度。

  • DECIMAL 类型字段具有精度(Precision)和标度(Scale)。当两个DECIMAL字段的精度、标度不一致时,会按照以下规则进行合并:

    • 取两个字段scale的较大值,作为合并后的新标度。

    • 将上述整数位数的较大值与新标度相加,作为合并后的新精度。

    • 若合并后所需精度超过DECIMAL上限(38),则优先截断小数位精度,保留整数位。