2017-06-27 2 views
1

Ich habe eine Spalte, die eine Reihe von Größen ist, wo es Räume, aber einige, die ich behalten wollen, und dann sammeln diese in ein ArrayBigQuery SQL - Regex und sammeln als Array

zB UK 8 US 9 EU 42

zu

[UK 8 US 9, 42 EU]

im schrecklich regex, wie in Standard-SQL, wie würde ich das tun?

Dank

Antwort

2
#standardSQL 
SELECT col, REGEXP_EXTRACT_ALL(s, '([A-Z]+ [0-9]+)') arr 
FROM (
    SELECT 'col' col, 'UK 8 US 9 EU 42' s 
) 

enter image description here

+0

Dank Felipe häuft! Schnelle Frage als BigQuery-Experte, spark (Databricks) hat kürzlich ein Feature namens 'Higher Order Functions' für SQL veröffentlicht. Welche sind hervorragend für rekursive Transformationen mit einem einfachen SQL/funktionale Programmierung Modell. Haben die Leute von BQ das gesehen und eine ähnliche Fähigkeit in Betracht gezogen? UDFs existieren, aber das ist eingebaut/sehr einfach zu äußern, sprachunabhängig und optimiert - sei cool, um auch mit BQ Standard SQL zu sehen! Loving BQ :) –

+0

https://docs.databricks.com/spark/latest/spark-sql/higher-order-functions-lambda-functions.html –

+2

Diese Funktionen können bereits mit Standard-SQL in BigQuery ausgedrückt werden. Zum Beispiel ist 'TRANSFORM (Werte, Wert -> Wert + Schlüssel)' äquivalent zu 'ARRAY (SELECT Wert + Schlüssel FROM UNNEST (Wert) AS Wert)'. –

Verwandte Themen