2016-11-02 7 views
0

行にあるすべてのURLを繰り返しフィールドに抽出するクエリの出力を注文しようとしています - 元の行には0から20までのURLが含まれていました。繰り返しフィールドに非繰り返しフィールドと同じ値を割り当てようとしています

これは私の最初のクエリであり、すべてのURLを抽出するのに効果的でした。

SELECT 
Unique_ID, Content, Col_C, Col_D, 
REGEXP_EXTRACT_ALL(Content, r'(?i:(?:(?:(?:ftp|https?):\/\/)(?:www\.)?|www\.)(?:[\da-z-_\.]+)(?:[a-z\.]{2,7})(?:[\/\w\.-_\?\&]*)*\/?)') AS URL 
FROM 
    Project.Table_1 

行当たり多くのURLが存在する場合しかし、新しい列、「URL」はだけ繰り返した結果の最初の行に他の列の値を付加します。私は代わりに各一意のURLのために作成された新しい行を取得するために、 'Content'列の値の繰り返しを探しています。これは、Col_C、Col_Dなどでコード化された値を後で照会するときに個々のURLに再接続できるようにするためです。

理想的には、これは私が見たいものです。

初期結果:

Unique_ID  Content Col_C  Col_D  URL 
001   abc   efg  hij  www.facebook.com 
002   zxy   qwe  rty  www.facebook.com 
               www.bbc.co.uk 
               www.nbc.com 


Desired output: 
Unique_ID  Content Col_C  Col_D  URL 
001   abc   efg  hij  www.facebook.com 
002   zxy   qwe  rty  www.facebook.com 
002   zxy   qwe  rty  www.bbc.co.uk             002   zxy   qwe  rty  www.nbc.com 

は、すべてが理にかなっていることを願っています!

これについてのお手伝いがありがとうございます、ありがとうございます。

答えて

3
SELECT 
    Unique_ID, Content, Col_C, Col_D, URL  
FROM (
    SELECT Unique_ID, Content, Col_C, Col_D, 
    REGEXP_EXTRACT_ALL(Content, r'(?i:(?:(?:(?:ftp|https?):\/\/)(?:www\.)?|www\.)(?:[\da-z-_\.]+)(?:[a-z\.]{2,7})(?:[\/\w\.-_\?\&]*)*\/?)') AS URL 
    FROM Project.Table_1 
), UNNEST(URL) as URL 
関連する問題