2 votes

Bigquery tableau de STRINGs en tableau de INTs

Je tente de récupérer un tableau d'INT64 dans BigQuery standard SQL à partir d'une colonne qui est une longue chaîne de nombres séparés par des virgules (par exemple, 2013,1625,1297,7634). Je peux facilement extraire un tableau de chaînes avec :

SELECT
  SPLIT(string_col,",")
FROM
  table

Cependant, je veux renvoyer un tableau d'INT64, pas un tableau de chaînes. Comment puis-je faire cela ? J'ai essayé

CAST(SPLIT(string_col,",") AS ARRAY)

mais cela ne fonctionne pas.

2voto

Mikhail Berlyant Points 50218

Voici le code pour BigQuery Standard SQL

#standardSQL
WITH yourTable AS (
  SELECT 1 AS id, '2013,1625,1297,7634' AS string_col UNION ALL
  SELECT 2, '1,2,3,4,5'
)
SELECT id, 
  (SELECT ARRAY_AGG(CAST(num AS INT64)) 
    FROM UNNEST(SPLIT(string_col)) AS num
  ) AS num,
  ARRAY(SELECT CAST(num AS INT64) 
    FROM UNNEST(SPLIT(string_col)) AS num
  ) AS num_2
FROM yourTable

0voto

Victor Mota Points 856

Mikhail m'a devancé et sa réponse est plus détaillée mais j'ajoute ceci comme exemple de reproduction plus minimal :

SELECT CAST(num as INT64) from unnest(SPLIT("2013,1625,1297,7634",",")) as num;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X