VARIANT 类型查询报错

Viewed 59

正常查询VARIANT 类型正常

select
CUSTOMPROPERTIES
from 
HRIS_ODS.EMPLOYEE_RECORDINFO_ODS

image.png
关联查询

SELECT	
HR_EDO.USERID
,HR_ERDO.CUSTOMPROPERTIES
FROM	
(						SELECT								*						FROM 	HRIS_ODS.EMPLOYEEINFO_ODS
WHERE	STDISDELETED = 0
)									AS HR_EDO
LEFT JOIN
(						SELECT								*						FROM 	HRIS_ODS.EMPLOYEE_RECORDINFO_ODS						WHERE	STDISDELETED = 0 AND SERVICETYPE = 0
)												AS HR_ERDO
ON					HR_EDO.USERID = HR_ERDO.USERID

1722842177(1).png

image.png
image.png
建表语句:

CREATE TABLE `EMPLOYEE_RECORDINFO_ODS` (
  `USERID` INT NOT NULL COMMENT '任职记录父对象员工信息业务实体USERID',
  `SERVICETYPE` INT NULL COMMENT '任职类型 0主职 1兼职',
  `OBJECTID` VARCHAR(100) NULL COMMENT '业务对象实体主键GUID',
  `POBJECTDATAID` VARCHAR(300) NOT NULL COMMENT '父对象数据员工实体主键GUID',
  `OIDDEPARTMENT` INT NOT NULL COMMENT '任职部门',
  `STARTDATE` DATETIME NOT NULL COMMENT '任职记录的生效时间',
  `STOPDATE` DATETIME NULL COMMENT '任职记录的失效时间',
  `JOBNUMBER` VARCHAR(100) NULL COMMENT '工号',
  `ENTRYDATE` DATETIME NULL COMMENT '任职记录的入职日期',
  `LASTWORKDATE` DATETIME NULL COMMENT '任职记录的最后工作日的日期',
  `REGULARIZATIONDATE` DATETIME NULL COMMENT '任职记录的转正日期',
  `PROBATION` INT NULL COMMENT '试用期(月) 0表示无试用期',
  `ORDER` INT NULL COMMENT '排序号',
  `EMPLOYTYPE` INT NULL COMMENT '雇佣关系 0内部员工 1外部人员 2实习生',
  `SERVICESTATUS` INT NULL COMMENT '任职状态 0任职中 1任职结束',
  `APPROVALSTATUS` BIGINT NULL COMMENT '审批状态: 0草稿, 1审批中 2审批通过 3审批未通过 4生效 5作废 6已驳回',
  `EMPLOYMENTSOURCE` VARCHAR(200) NULL COMMENT '人员来源实体对象',
  `EMPLOYMENTFORM` VARCHAR(200) NULL COMMENT '用工形式实体对象',
  `ISCHARGE` TINYINT NULL COMMENT '是否部门负责人,\"0\"-否、\"1\"-是',
  `OIDJOBPOST` VARCHAR(200) NULL COMMENT '职务实体',
  `OIDJOBSEQUENCE` VARCHAR(200) NULL COMMENT '职务序列实体',
  `OIDPROFESSIONALLINE` VARCHAR(200) NULL COMMENT '专业条线实体',
  `OIDJOBPOSITION` VARCHAR(200) NULL COMMENT '职位实体',
  `OIDJOBLEVEL` VARCHAR(200) NULL COMMENT '职级实体',
  `OIDJOBGRADE` VARCHAR(200) NULL COMMENT '职等',
  `PLACE` TEXT NULL COMMENT '工作地点 3100上海市 4403深圳市 320509昆山市 ',
  `EMPLOYEESTATUS` VARCHAR(100) NULL COMMENT '人员状态 1待入职 2试用 3正式 4调出 5待调入 6退休 8离职 12非正式',
  `EMPLOYMENTTYPE` VARCHAR(200) NULL COMMENT '人员类别实体对象',
  `EMPLOYMENTCHANGEID` VARCHAR(100) NULL COMMENT '任职变更记录实体',
  `CHANGEDSTATUS` VARCHAR(100) NULL COMMENT '变动后状态 1待入职 2试用 3正式 4调出 5待调入 6退休 8离职 12非正式',
  `POIDEMPADMIN` INT NULL COMMENT '直线经理USERID',
  `POIDEMPRESERVE2` INT NULL COMMENT '虚线经理USERID',
  `BUSINESSTYPEOID` VARCHAR(100) NULL COMMENT '变动业务类型OID 1入职 2转正 3调动 5离职 6退休 10组织调整',
  `CHANGETYPEOID` VARCHAR(100) NULL COMMENT '变动类型ID 1新增入职 2重聘入职 3正常转正 4延期试用 5未通过 6试用中 7机构内调动 8机构间调出 9机构间调入 16提前退休 23组织调整 28实习结束 25提前转正 30新增外部人员 13辞职 32退休返聘 33返聘结束 29实习转正 24死亡 26延期转正 27机构间调动 40劳务转正式 31停用外部人员 17正常退休 14辞退 15失踪 18延迟退休',
  `ENTRYSTATUS` VARCHAR(100) NULL COMMENT '入职状态 0正常 1取消 2延期',
  `ISCURRENTRECORD` BOOLEAN NULL COMMENT '是否当前生效',
  `LUOFFER` TEXT NULL COMMENT 'LU_OFFER 业务数据GUID',
  `ENTRYTYPE` VARCHAR(100) NULL COMMENT '入职类型 1新增入职 2重聘入职 29实习转正 30新增外部人员 32退休返聘 35劳务转正式',
  `STAFFID` VARCHAR(100) NULL COMMENT '员工ID',
  `WORKYEARBEFORE` FLOAT NULL COMMENT '入职前累计工龄(年)',
  `WORKYEARGROUPBEFORE` FLOAT NULL COMMENT '入职前集团工龄(年)',
  `WORKYEARCOMPANYBEFORE` FLOAT NULL COMMENT '入职前司龄(年)',
  `WORKYEARTOTAL` FLOAT NULL COMMENT '累计工龄(年)',
  `WORKYEARGROUPTOTAL` FLOAT NULL COMMENT '累计集团工龄(年)',
  `WORKYEARCOMPANYTOTAL` FLOAT NULL COMMENT '累计司龄',
  `OIDORGANIZATION` INT NULL COMMENT '任职机构(如子公司)',
  `WHEREABOUTS` VARCHAR(300) NULL COMMENT '离职后去向',
  `BLACKSTAFFDESC` TEXT NULL COMMENT '加黑说明',
  `BLACKLISTADDREASON` TEXT NULL COMMENT '加黑原因 1重大违纪 2诚信问题 3稳定性差 4辞职 5其他',
  `TRANSITIONTYPEOID` VARCHAR(100) NULL COMMENT '异动类型ID',
  `CHANGEREASON` TEXT NULL COMMENT '变动原因',
  `PROBATIONRESULT` TEXT NULL COMMENT '试用结果 3正常转正 4延期试用 5未通过 6试用中 25提前转正 26延期转正',
  `PROBATIONACTUALSTOPDATE` DATETIME NULL COMMENT '试用期实际结束日期',
  `PROBATIONSTARTDATE` DATETIME NULL COMMENT '试用开始日期',
  `PROBATIONSTOPDATE` DATETIME NULL COMMENT '预计试用结束日期',
  `ISHAVEPROBATION` VARCHAR(80) NULL COMMENT '是否有试用期',
  `REMARKS` TEXT NULL COMMENT '备注',
  `ADDORNOTBLACKLIST` BOOLEAN NULL COMMENT '是否加入黑名单',
  `BUSINESSMODIFIEDBY` INT NULL COMMENT '业务修改人',
  `BUSINESSMODIFIEDTIME` DATETIME NULL COMMENT '业务修改时间',
  `TRAINEESTARTDATE` DATETIME NULL COMMENT '实习开始日期',
  `CUSTOMPROPERTIES` VARIANT NULL COMMENT '租户级别自定义字段KEY(字段编码)-VALUE(字段值)字典',
  `TRANSLATEPROPERTIES` VARIANT NULL COMMENT '动态翻译字段集合,用于数据源字段翻译功能',
  `CREATEDBY` INT NULL COMMENT '创建人员工USERID',
  `CREATEDTIME` DATETIME NULL COMMENT '创建时间',
  `MODIFIEDBY` VARCHAR(200) NULL COMMENT '修改人员工USERID',
  `MODIFIEDTIME` DATETIME NULL COMMENT '修改时间',
  `STDISDELETED` BOOLEAN NULL COMMENT '是否删除',
  INDEX INDX_JOBNUMBER (`JOBNUMBER`) USING INVERTED PROPERTIES("parser" = "unicode") COMMENT ''工号''
) ENGINE=OLAP
UNIQUE KEY(`USERID`, `SERVICETYPE`)
COMMENT '员工任职信息'
DISTRIBUTED BY HASH(`SERVICETYPE`) BUCKETS 1
PROPERTIES (
"replication_allocation" = "tag.location.default: 3",
"min_load_replica_num" = "-1",
"is_being_synced" = "false",
"storage_medium" = "hdd",
"storage_format" = "V2",
"inverted_index_storage_format" = "V1",
"enable_unique_key_merge_on_write" = "true",
"light_schema_change" = "true",
"function_column.sequence_col" = "MODIFIEDTIME",
"disable_auto_compaction" = "false",
"enable_single_replica_compaction" = "false",
"group_commit_interval_ms" = "10000",
"group_commit_data_bytes" = "134217728",
"enable_mow_light_delete" = "false"
);
1 Answers

方便补齐下相关表结构,目前根据异常分析可能是字段间的类型没对应上或者VARIANT等值比较时没正常取对应k-v,例如:

-- 测试表
CREATE TABLE example_table (
    id BIGINT,
    v VARIANT
)
DISTRIBUTED BY HASH(`id`) BUCKETS AUTO
PROPERTIES (
"replication_allocation" = "tag.location.default: 1"
);

-- 测试数据
INSERT INTO example_table (id, v) VALUES (1, '{"new_key": "new_value"}');
INSERT INTO example_table (id, v) VALUES (2, '{"a":66.66}');

-- VARIANT使用示例
SELECT v['new_key'] as new_key, v['a'] as a from example_table