Dear Team,
Any help will be much appreciated.
Error SQL Error [40000] [42000]: Error while compiling statement: FAILED:
SemanticException Schema of both sides of union should match.
I have an ETL workload that stores data into temp_table with the schema as
shown below.
CREATE EXTERNAL TABLE IF NOT EXISTS temp_table (
VC_ITEM_CODE STRING,
VC_SUB_GROUP STRING,
VC_PRODUCT_NAME STRING,
VC_PRODUCT_UNIT STRING,
VC_GROUP_CODE STRING,
DT_VAT_START TIMESTAMP,
VC_BAND_CODE STRING,
VC_SEMI_BAND_CODE STRING,
VC_DIVISIONS STRING,
NU_UNIT_FACTOR DECIMAL(30, 0),
VC_DIVISION_SEG_CODE STRING,
VC_COLOR_COMB STRING,
DT_MOD_DATE TIMESTAMP,
VC_INACTIVE_PRODUCT STRING,
RN DECIMAL(10, 0),
country STRING
)
STORED AS PARQUET
LOCATION 'S{path}'
Then i want to load it to the final table
CREATE TABLE product_dimension (
`ID` BIGINT DEFAULT SURROGATE_KEY(),
VC_ITEM_CODE STRING,
VC_SUB_GROUP STRING,
VC_PRODUCT_NAME STRING,
VC_PRODUCT_UNIT STRING,
VC_GROUP_CODE STRING,
DT_VAT_START TIMESTAMP,
VC_BAND_CODE STRING,
VC_SEMI_BAND_CODE STRING,
VC_DIVISIONS STRING,
NU_UNIT_FACTOR DECIMAL(30, 0),
VC_DIVISION_SEG_CODE STRING,
VC_COLOR_COMB STRING,
DT_MOD_DATE TIMESTAMP,
VC_INACTIVE_PRODUCT STRING,
RN DECIMAL(10, 0),
country STRING,
PRIMARY KEY (ID) DISABLE NOVALIDATE)
STORED BY ICEBERG;
When I attempt to perform a merge operation on column vc_*item_code *i get
the error as shown above :
MERGE
INTO
product_dimension AS c
USING (
SELECT
*
FROM
temp_table) AS s ON s.vc_item_code = c.vc_item_code
AND s.country = c.country
WHEN MATCHED THEN
UPDATE
SET
vc_item_code = s.vc_item_code,
vc_sub_group = s.vc_sub_group,
vc_product_name = s.vc_product_name,
vc_product_unit = s.vc_product_unit,
vc_group_code = s.vc_group_code,
dt_vat_start = s.dt_vat_start,
vc_band_code = s.vc_band_code,
vc_semi_band_code = s.vc_semi_band_code,
vc_divisions = s.vc_divisions,
nu_unit_factor = s.nu_unit_factor,
vc_division_seg_code = s.vc_division_seg_code,
vc_color_comb = s.vc_color_comb,
dt_mod_date = s.dt_mod_date,
vc_inactive_product = s.vc_inactive_product,
rn = s.rn,
country = s.country
WHEN NOT MATCHED THEN
INSERT
(
vc_item_code,
vc_sub_group,
vc_product_name,
vc_product_unit,
vc_group_code,
dt_vat_start,
vc_band_code,
vc_semi_band_code,
vc_divisions,
nu_unit_factor,
vc_division_seg_code,
vc_color_comb,
dt_mod_date,
vc_inactive_product,
rn,
country
)
VALUES (
s.vc_item_code,
s.vc_sub_group,
s.vc_product_name,
s.vc_product_unit,
s.vc_group_code,
s.dt_vat_start,
s.vc_band_code,
s.vc_semi_band_code,
s.vc_divisions,
s.nu_unit_factor,
s.vc_division_seg_code,
s.vc_color_comb,
s.dt_mod_date,
s.vc_inactive_product,
s.rn,
s.country
);
Warm Regards