需求
在质量检核过程中,有时候需要校验数据连续性。 比如楼层表,每个楼层的间距固定是3米,或者检验某个报告表,每天都产生了一条报告数据,这是对数据产生时间连续性做检核,上一条数据的报告结束时间,是下一条数据的开始时间
目录
实现
参数介绍
| 参数 | 替换 | |
| $ { START_COL } | 开始值字段 | |
| $ { END_COL } | 结束值字段 | |
| { FZ_PARAM } | 分组字段,可以是组合字段 | |
| $ { PX_COL } | 排序字段 | |
| $ { TABLE } | 换成实际数据表 | |
| $ { DZ_TABLE } | 关联表 | |
| $ { SJJ_GLTJ } | 关联条件 | |
| $ { COL } | 检核的字段 | |
日期连续性
非法行数,总行数,期望行数,缺失行数
SELECT
a,
b,
b + d AS c,
d
FROM
(
SELECT
sum( CASE WHEN $ { START_COL } > $ { END_COL } THEN 1 ELSE 0 END ) AS a,
count( 1 ) AS b,
sum( CASE WHEN $ { START_COL } != zhy_pre_col THEN 1 ELSE 0 END ) AS d
FROM
(
SELECT
*,
lag( $ { END_COL }, 1, NULL ) over ( PARTITION BY $ { FZ_PARAM } ORDER BY $ { PX_COL } ASC ) AS zhy_pre_col
FROM
$ { TABLE } A
) A
)a
数据连续性-固定间距(2张表)
非法行数,总行数,期望行数,缺失行数
SELECT
a,
b,
c,
c - b + a AS d
FROM
(
SELECT
count( 1 ) AS a
FROM
(
SELECT
A.* $ { FZ_PARAM_DBM },
lag( $ { COL }, 1, NULL ) over ( PARTITION BY $ { FZ_PARAM } ORDER BY $ { PX_COL } ASC ) AS zhy_pre_col
FROM
$ { TABLE } A
INNER JOIN $ { DZ_TABLE } B ON $ { COMMON_TJ_DZ }
AND $ { SJJ_GLTJ }) A
WHERE
(
A.zhy_pre_col IS NULL
AND A.$ { COL }!= $ { START_COL })
OR NOT ((
A.$ { COL }- A.zhy_pre_col
)= $ { PARAM }
AND A.$ { COL }<= $ { END_COL }
AND A.$ { COL } >= $ { START_COL })) a,(
SELECT
count( 1 ) AS b
FROM
$ { TABLE }
) b,(
SELECT
sum( c ) AS c
FROM
(
SELECT
ROUND(
max(
$ { COL2 }- $ { COL1 })/ $ { PARAM })+ 1 AS c
FROM
$ { TABLE } A
RIGHT JOIN $ { DZ_TABLE } B ON $ { SJJ_GLTJ }
GROUP BY
$ { FZ_PARAM }
) t
) c
数据连续性-固定间距(单表)
非法行数,总行数,期望行数,缺失行数,下面sql如下
SELECT
a,
b,
b + d AS c,
d
FROM
(
SELECT
sum( CASE WHEN $ { START_COL } > $ { END_COL } THEN 1 ELSE 0 END ) AS a,
count( 1 ) AS b,
sum( CASE WHEN $ { START_COL } != zhy_pre_col THEN 1 ELSE 0 END ) AS d
FROM
(
SELECT
*,
lag( $ { END_COL }, 1, NULL ) over ( PARTITION BY $ { FZ_PARAM } ORDER BY $ { PX_COL } ASC ) AS zhy_pre_col
FROM
$ { TABLE } A
) A
)a
本文介绍了如何通过SQL查询来检查数据连续性,包括楼层间距和时间序列数据,以及针对单表和多表的固定间距检查方法,提供了相应的参数和示例查询语句。


被折叠的 条评论
为什么被折叠?



