2017-12-04 104 views
1

Google BigQueryで個々の配列値を注文(注文順)することが可能かどうか疑問に思っていますか?BigQuery標準SQLで配列をソートする方法は?

私は、最初にトランスラショナルベーステーブル全体を順番に適用し、次に配列を集約することでこれを達成することができました。テーブルが大きすぎると大きなテーブルで注文するとリソースエラーが表示されます。

SQLまたはUDFを使用して個々の配列値を並べ替えることができるかどうかは疑問です。

これは一度Order of data in bigquery repeated recordsと尋ねられましたが、4,5年前です。

答えて

3

もちろん、ARRAY機能を使用できます。オプションのORDER BY句をサポートしています。あなたは、サンプルデータを提供していないが、あなたはarrという名前のトップレベルの配列の列を持っていると仮定すると、あなたはこのような何かを行うことができます。

SELECT 
    col1, 
    col2, 
    ARRAY(SELECT x FROM UNNEST(arr) AS x ORDER BY x) AS arr 
FROM MyTable; 

をこれは、それらの値によってarrの要素を並べ替えます。実際に構造体タイプの配列(ARRAY<STRUCT<a INT64, b STRING>>など)がある場合は、構造体フィールドの1つでソートすることができます。

SELECT 
    col1, 
    col2, 
    ARRAY(SELECT x FROM UNNEST(arr) AS x ORDER BY a) AS arr 
FROM MyTable; 
+0

スーパーソリューション!ありがとう。 – Mari

関連する問題