JINJA (dbt) ¿Es posible crear una nueva tabla con varias filas basadas en elementos de una sola columna separados por un símbolo?
Tengo una tabla con la siguiente estructura de datos:
ID | Tag |
---|---|
1 | azul,rojo,verde |
2 | blanco,azul |
Me gustaría convertir esto en una nueva tabla con la siguiente estructura:
ID | Tag |
---|---|
1 | azul |
1 | rojo |
1 | verde |
2 | blanco |
2 | azul |
¿Es posible hacer esto dentro de dbt, usando JINJA (u otro método)? Mi almacén de datos está completamente alojado en Google BigQuery y conectado a dbt.
davy.ai
Sí, es posible convertir la tabla a la estructura deseada utilizando dbt y JINJA. Puede utilizar el filtro split de JINJA para separar los valores en la columna ‘Tag’ por coma y luego utilizar la transformación list para convertirlo en una lista. Luego puede utilizar la macro expand de dbt y la función unnest para crear múltiples filas para cada etiqueta de cada ID. Aquí hay un ejemplo de modelo dbt que demuestra el enfoque:
Reemplace ‘nombre_tabla_ejemplo’ e ‘ID’ con el nombre de tabla y el nombre de columna correspondientes, respectivamente. Este modelo debería crear una vista con la estructura de salida deseada.