Big Query: transponer matrices en columnas
Oct 14 2020
Tenemos una tabla en Big Query como la siguiente.
Tabla de entrada:
Name | Interests
-----+----------
Bob | ["a"]
Sue | ["a","b"]
Joe | ["b","c"]
Queremos convertir la tabla de arriba al formato de abajo para que sea amigable con BI / Visualización.
Tabla de destino / requerida:
+------------------+
| Name | a | b | c |
+------------------+
| Bob | 1 | 0 | 0 |
| Sue | 1 | 1 | 0 |
| Joe | 0 | 1 | 0 |
+------------------+
Nota: La columna Intereses es un tipo de datos de matriz. ¿Es posible este tipo de transformación en Big Query? En caso afirmativo, ¿alguna consulta de referencia?
¡Gracias por adelantado!
Respuestas
1 MikhailBerlyant Oct 14 2020 at 11:38
A continuación, se muestra para SQL estándar de BigQuery y utiliza funciones de secuencias de comandos de BQ
#standardSQL
create temp table ttt as (
select name, interest
from `project.dataset.table`,
unnest(interests) interest
);
EXECUTE IMMEDIATE (
SELECT """
SELECT name, """ ||
STRING_AGG("""MAX(IF(interest = '""" || interest || """', 1, 0)) AS """ || interest, ', ')
|| """
FROM ttt
GROUP BY name
"""
FROM (
SELECT DISTINCT interest
FROM ttt
ORDER BY interest
)
);
si se aplica a los datos de muestra de su pregunta, la salida es