2017-07-12 3 views
2

Ich versuche, ein Array von INT64 s in BigQuery Standard-SQL aus einer Spalte, die eine lange Reihe von Zahlen durch Kommata getrennt ist (z. B. 2013,1625,1297,7634) ziehen. Ich kann ein Array von Strings leicht mit ziehen:Bigquery Array von STRINGs zu Array von INTs

SELECT 
    SPLIT(string_col,",") 
FROM 
    table 

Ich möchte jedoch eine Reihe von INT64 s zurückzukehren, nicht ein Array von Strings. Wie kann ich das machen? Ich habe versucht

CAST(SPLIT(string_col,",") AS ARRAY<INT64>) 

aber das funktioniert nicht.

Antwort

1

ist unten für 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 
+0

Sie schlugen mich, es zu :) Demonstrieren Sie vielleicht auch eine 'ARRAY'-Unterabfrage? (Das würde ich posten). –

+0

: o) guter Punkt - hinzugefügt - wenn das ist, was Sie meinten –

0

Mikhail sie schlugen mich und seine Antwort ist umfangreicher, aber dies als eine minimale Repro Zugabe:

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

Überprüfen Sie dies: "Allerdings möchte ich ein ** Array ** von INT64s": o) –