2016-11-02 7 views
0

Ich versuche, die Ausgabe einer Abfrage zu bestellen, die alle URLs in einer Zeile zu einem wiederholten Feld extrahiert - die ursprünglichen Zeilen enthalten alles zwischen 0 - 20 URLs.Versuchen wiederholte Felder gleiche Werte als nicht wiederholte Felder zuweisen

Dies war meine erste Abfrage und es funktionierte hervorragend beim Extrahieren jeder 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 

jedoch, wo es viele URLs pro Reihe, die neue Spalte ‚URL‘ legt nur die Werte von anderen Spalten in der ersten Zeile eines wiederholtes Ergebnisses. Ich suche nach einer neuen Zeile, die stattdessen für jede eindeutige URL erstellt wird, mit einer Wiederholung der Werte in der Spalte "Inhalt". Dies ist der Fall, damit ich Werte, die in Col_C, Col_D usw. codiert wurden, an jede einzelne URL anhängen kann, wenn ich sie später abfragen möchte.

Idealerweise möchte ich die Dinge so aussehen lassen.

Anfängliche Ergebnis:

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 

Hoffnung, dass alle Sinn macht!

Jede Hilfe zu diesem würde wirklich geschätzt werden, danke.

Antwort

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 
Verwandte Themen