我尝试命令查询的输出,该查询将行中存在的所有网址提取到重复字段 - 原始行包含0到20个网址之间的任何内容。
这是我最初的查询,它可以很好地提取每个网址。
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
但是,如果每行有多个网址,则新列的网址为'仅将其他列的值附加到重复结果的第一行。我希望为每个唯一网址创建一个新行,并重复“内容”中的值。柱。这样,当我希望稍后查询时,我可以将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
希望一切都有意义!
对此的任何帮助都将非常感谢,谢谢。
答案 0 :(得分: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