Ниже для BigQuery Standard SQL
#standardSQL
SELECT id, rec.*
FROM `project.dataset.table`,
UNNEST(ARRAY(
SELECT AS STRUCT code, quantity, price
FROM UNNEST(code) code WITH OFFSET
JOIN UNNEST(quantity) quantity WITH OFFSET USING(OFFSET)
JOIN UNNEST(price) price WITH OFFSET USING(OFFSET)
)) rec
Вы можете протестировать, поиграть с выше, используя образец фиктивных данных, как в примере ниже
#standardSQL
WITH `project.dataset.table` AS (
SELECT 1 id, ['product1', 'product2', 'product3'] code, [10, 20, 30] quantity, [2.99, 1.99, 0.99] price UNION ALL
SELECT 2, ['product4', 'product5', 'product6'], [60, 50, 40], [3.99, 4.99, 5.99]
)
SELECT id, rec.*
FROM `project.dataset.table`,
UNNEST(ARRAY(
SELECT AS STRUCT code, quantity, price
FROM UNNEST(code) code WITH OFFSET
JOIN UNNEST(quantity) quantity WITH OFFSET USING(OFFSET)
JOIN UNNEST(price) price WITH OFFSET USING(OFFSET)
)) rec
с выводом
Row id code quantity price
1 1 product1 10 2.99
2 1 product2 20 1.99
3 1 product3 30 0.99
4 2 product4 60 3.99
5 2 product5 50 4.99
6 2 product6 40 5.99