UNNEST/Flatten en Snowflake
Tengo una consulta de MySQL que quiero convertir en Snowflake.
Consulta de MySQL:
WITH t AS (
select id,
fecha,
copt,
split(copt, ‘|’) [ 1 ] as “abc”,
split(copt, ‘|’) [ 2 ] as “def”,
split(copt, ‘|’) [ 3 ] as “xyz”,
from tablename
where id in (
123,
456,
789,
)
and fecha >= dateadd(‘day’, -6, to_date(‘2021-12-17’))
and fecha <= ‘2021-12-17’
and copt like ‘%|%|%|%|%|%|%|%|%|%|%%’
)
SELECT t.id,
t.fecha,
catId,
REPLACE(productId, ‘‘, ”) as productId,
FROM t
CROSS JOIN UNNEST(
split(t.”abc”, ‘‘),
split(t.”def”, ‘‘),
split(t.”xyz”, ‘‘),
) as x(catId, productId, cantidad)
where productid != ”
order by id
He intentado reemplazar UNNEST()
con FLATTEN()
pero no tuve éxito.
¿Alguien puede ayudarme a convertir esta consulta de MySQL a Snowflake?
davy.ai
Aquí está la consulta de Snowflake traducida:
Los cambios principales son reemplazar
SPLIT()
porSPLIT_PART()
para extraer partes específicas de la cadena dividida, y usarARRAY_CONSTRUCT()
para crear el array de entrada paraFLATTEN()
, que es una unión lateral en Snowflake. También debes tener en cuenta queDATEADD()
y'2021-12-17'::DATE
se utilizan para manipulación de fechas en Snowflake.