【发布时间】:2019-06-17 11:49:23
【问题描述】:
我们供应商的数据库包含所有数字的数字类型,包括整数和小数。从字面上看,每个数字类型列都创建为没有精度和比例的 NUMBER。
这是一个大问题,因为我们需要将这些列映射到目标系统上的适当数据类型,我们正在将这些表中的数据加载到其中。
我们需要知道一个数字是整数还是小数。
除了进行随机抽样/数据分析之外,是否可以推断出正确的数据类型?
更新: 我接受了下面的答案和@Bohemian 的建议。除此之外,我将使用 SAMPLE 子句对表进行随机抽样,因为我的源表很大(数十亿行)。
SELECT
MAX(CASE WHEN col1 IS NOT NULL AND col1 <> round(col1, 0) then 1 else 0 end) as col1,
MAX(CASE WHEN col2 IS NOT NULL AND col2 <> round(col2, 0) then 1 else 0 end) as col2
FROM TABLE
SAMPLE(0.05)
如果我只想对 X 行进行采样,请使用以下公式对 SAMPLE(N):
Xrows*100/table_rows_total
【问题讨论】:
-
相关讨论在这里stackoverflow.com/questions/39921053/…。在这种情况下,JOOQ 将是 BigDecimal