Doris 版本: 2.1.9
问题描述:
dm_dm_sv_is_inhos_pat_info_view 和 dm_dm_cz_ca_pat_info_view 都是视图,单独查询视图能正常查询,并且没有任何错误。
问题:当两个视图连接查询时, 当on条件后边出现两个不在视图中出现的字段时, 会报错,但是报错信息匹配不上。
示例:如下我有一个sql ,两个sql 关联, 其中 on条件(i.aaa_id =p.aaa_id) aaa_id在 两个视图都不存在。但是报错不提示 aaa_id 不存在, 提示的是其他的ID
SELECT
i.inhos_time
FROM
dm_dm_sv_is_inhos_pat_info_view i
JOIN
dm_dm_cz_ca_pat_info_view p ON i.pat_id = p.pat_id AND i.aaa_id =p.aaa_id
WHERE
i.inhos_time IS NOT NULL AND i.outhos_time IS NOT NULL;
错误信息:
errCode = 2, detailMessage = Unknown column 'inhos_regst_id' in 'xxxxxx.a'
inhos_regst_id 这个字段在查询的sql中就不存在。报错匹配不上, 不好排查错误, 这块有什么可快速精准定位的方式吗?
具体的案例sql如下:
-- 建表语句
CREATE TABLE `dw_dwb_sv_is_inhos_pat` (
`inhos_regst_id` bigint NOT NULL COMMENT "入院登记ID",
`org_id` bigint NOT NULL COMMENT "机构ID",
`hos_id` bigint NOT NULL COMMENT "医院ID",
`pat_id` bigint NULL COMMENT "患者ID",
`accord_diagnosis_id` bigint NULL COMMENT "符合路径的诊断ID"
) ENGINE=OLAP
UNIQUE KEY(`inhos_regst_id`, `org_id`, `hos_id`)
DISTRIBUTED BY HASH(`inhos_regst_id`, `org_id`, `hos_id`) BUCKETS 3
PROPERTIES (
"replication_num" = "1"
);
CREATE TABLE `dw_dwb_sv_is_inhos_pat_extend` (
`inhos_regst_id` bigint NOT NULL COMMENT "入院登记ID",
`org_id` bigint NOT NULL COMMENT "机构ID",
`hos_id` bigint NOT NULL COMMENT "医院ID",
`pat_id` bigint NULL COMMENT "患者ID"
) ENGINE=OLAP
UNIQUE KEY(`inhos_regst_id`, `org_id`, `hos_id`)
DISTRIBUTED BY HASH(`inhos_regst_id`, `org_id`, `hos_id`) BUCKETS 3
PROPERTIES (
"replication_num" = "1"
);
CREATE TABLE `dwd_dwd_dict_diagnosis_clinic` (
`cli_diag_id` bigint NOT NULL COMMENT "临床诊断ID",
`org_id` bigint NOT NULL COMMENT "机构ID",
`use_range` varchar(200) NULL COMMENT "使用范围"
) ENGINE=OLAP
UNIQUE KEY(`cli_diag_id`, `org_id`)
DISTRIBUTED BY HASH(`cli_diag_id`, `org_id`) BUCKETS 5
PROPERTIES (
"replication_num" = "1"
);
CREATE TABLE `dw_dwb_cz_ca_pat_info` (
`pat_id` bigint NOT NULL COMMENT "患者ID",
`org_id` bigint NOT NULL COMMENT "机构ID",
`pat_name` varchar(400) NULL COMMENT "患者姓名"
) ENGINE=OLAP
UNIQUE KEY(`pat_id`, `org_id`)
DISTRIBUTED BY HASH(`pat_id`, `org_id`) BUCKETS 3
PROPERTIES (
"replication_num" = "1"
);
-- 创建视图
CREATE VIEW dm_dm_sv_is_inhos_pat_info_view(
`inhos_regst_id` COMMENT "入院登记id",
`pat_id` COMMENT "患者id",
`org_id` COMMENT "机构id"
)
COMMENT "住院患者信息"
as
SELECT
a.inhos_regst_id AS inhos_regst_id, /* 入院登记id */
a.pat_id AS pat_id, /* 患者id */
a.org_id AS org_id /* 机构id */
FROM dw_dwb_sv_is_inhos_pat AS a
LEFT JOIN dw_dwb_sv_is_inhos_pat_extend AS b ON a.inhos_regst_id = b.inhos_regst_id AND a.org_id = b.org_id
LEFT JOIN dwd_dwd_dict_diagnosis_clinic AS c ON a.accord_diagnosis_id = c.cli_diag_id AND a.org_id = c.org_id;
CREATE VIEW dm_dm_cz_ca_pat_info_view(
`pat_id` COMMENT "患者id",
`pat_name` COMMENT "患者姓名",
`org_id` COMMENT "机构id"
)
COMMENT "患者信息"
as
SELECT
a.pat_id AS pat_id, /* 患者id */
a.pat_name AS pat_name, /* 患者姓名 */
a.org_id AS org_id /* 机构id */
FROM dw_dwb_cz_ca_pat_info AS a;
-- 查询视图 示例1:i.inhos_time 不存在, 提示错误 不一致 : Unknown column 'inhos_regst_id' in 'xxxxxxx'
SELECT
i.inhos_time,
i.pat_id
FROM
dm_dm_sv_is_inhos_pat_info_view i
JOIN
dm_dm_cz_ca_pat_info_view p ON i.pat_id = p.pat_id AND i.org_id = p.org_id
-- 查询视图 示例2: p.orgid 字段不存在, 提示错误不一致: Unknown column 'inhos_regst_id' in 'xxxxxxxx'
SELECT
i.pat_id
FROM
dm_dm_sv_is_inhos_pat_info_view i
JOIN
dm_dm_cz_ca_pat_info_view p ON i.pat_id = p.pat_id AND i.org_id = p.orgid