Saltar al contenido

Dividir una columna de cadena en BigQuery

Solución:

¡Buenas noticias para todos! ¡BigQuery ahora puede DIVIDIR ()!


Mira “buscar las frases de dos palabras que aparecen en más de una fila en un conjunto de datos”.

No existe una forma actual de dividir () un valor en BigQuery para generar varias filas a partir de una cadena, pero puede usar una expresión regular para buscar las comas y encontrar el primer valor. Luego, ejecute una consulta similar para encontrar el segundo valor, y así sucesivamente. Todos se pueden combinar en una sola consulta, utilizando el patrón presentado en el ejemplo anterior (UNION entre comas).

Al intentar reescribir la respuesta de Elad Ben Akoune en Standart SQL, la consulta se vuelve así;

WITH name_score AS (
SELECT Name, split(Scores,';') AS Score
FROM (
      (SELECT * FROM (SELECT 'Bob' AS Name ,'10;20;20' AS Scores)) 
      UNION ALL 
      (SELECT * FROM (SELECT 'Sue' AS Name ,'14;12;19;90' AS Scores))
      UNION ALL
      (SELECT * FROM (SELECT 'Joe' AS Name ,'30;15' AS Scores))
)) 
SELECT name, score
FROM name_score
CROSS JOIN UNNEST(name_score.score) AS score;

Y esto salidas;

+------+-------+
| name | score |
+------+-------+
| Bob  | 10    |
| Bob  | 20    |
| Bob  | 20    |
| Sue  | 14    |
| Sue  | 12    |
| Sue  | 19    |
| Sue  | 90    |
| Joe  | 30    |
| Joe  | 15    |
+------+-------+

Si alguien sigue buscando una respuesta

select Name,split(Scores,';') as Score
from (
      # replace the inner custome select with your source table
      select *
      from 
      (select 'Bob' as Name ,'10;20;20' as Scores),
      (select 'Sue' as Name ,'14;12;19;90' as Scores),
      (select 'Joe' as Name ,'30;15' as Scores)
);
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *