Может кто-нибудь помочь мне придумать лучший способ сделать это?
Опция ниже для стандартного SQL BigQuery. Если не лучший - безусловно, хороший, чтобы попробовать. Предполагается, что таблица all_codes невелика, поэтому массив этих кодов является управляемым ...
#standardSQL
CREATE TEMP FUNCTION code_mapping(code STRING, all_codes ARRAY<STRUCT<all_codes STRING, description STRING>>) AS ((
SELECT description FROM UNNEST(all_codes) WHERE code = all_codes
));
SELECT OrderNo,
code_mapping(Style_code, codes) Style_desc,
code_mapping(Color_code, codes) Color_desc,
code_mapping(Country_code, codes) Country_desc
FROM `project.dataset.table1`
CROSS JOIN (SELECT ARRAY_AGG(t) codes FROM `project.dataset.table2` t)
Вы можете протестировать, поиграть с выше, используя пример данных из вашего вопроса, как в примере ниже
#standardSQL
CREATE TEMP FUNCTION code_mapping(code STRING, all_codes ARRAY<STRUCT<all_codes STRING, description STRING>>) AS ((
SELECT description FROM UNNEST(all_codes) WHERE code = all_codes
));
WITH `project.dataset.table1` AS (
SELECT 21540 OrderNo, 'abc' Style_code, 'kdx' Color_code, 'plo' Country_code UNION ALL
SELECT 21541, 'gcs', 'kdy', 'pla' UNION ALL
SELECT 21542, 'wer', 'kdz', 'plh' UNION ALL
SELECT 21543, 'abc', 'kdx', 'pld' UNION ALL
SELECT 21544, 'gcs', 'kdy', 'plo'
), `project.dataset.table2` AS (
SELECT 'abc' all_codes, 'plain' description UNION ALL
SELECT 'gcs', 'vintage' UNION ALL
SELECT 'wer', 'modern' UNION ALL
SELECT 'kdx', 'white' UNION ALL
SELECT 'kdy', 'gray' UNION ALL
SELECT 'kdz', 'black' UNION ALL
SELECT 'plo', 'USA' UNION ALL
SELECT 'pla', 'Mexico' UNION ALL
SELECT 'plh', 'Canada' UNION ALL
SELECT 'pld', 'Brazil'
)
SELECT OrderNo,
code_mapping(Style_code, codes) Style_desc,
code_mapping(Color_code, codes) Color_desc,
code_mapping(Country_code, codes) Country_desc
FROM `project.dataset.table1`
CROSS JOIN (SELECT ARRAY_AGG(t) codes FROM `project.dataset.table2` t)
с результатом
Row OrderNo Style_desc Color_desc Country_desc
1 21540 plain white USA
2 21541 vintage gray Mexico
3 21542 modern black Canada
4 21543 plain white Brazil
5 21544 vintage gray USA