2012-12-12 75 views
4

在BigQuery查詢語言中是否有一種簡單的方法來進行URL解碼?我正在處理一個包含一些值中包含URL編碼字符串的列的表。例如:bigquery url decode

http://xyz.com/example.php?url=http%3A%2F%2Fwww.example.com%2Fhello%3Fv%3D12345&foo=bar&abc=xyz 

我提取 「URL」 參數,像這樣:

SELECT REGEXP_EXTRACT(column_name, "url=([^&]+)") as url 
from [mydataset.mytable] 

這給了我:

http%3A%2F%2Fwww.example.com%2Fhello%3Fv%3D12345 

我想要做的是一樣的東西:

SELECT URL_DECODE(REGEXP_EXTRACT(column_name, "url=([^&]+)")) as url 
from [mydataset.mytable] 

因此返回:

http://www.example.com/hello?v=12345 

如果可能,我想避免使用多個REGEXP_REPLACE()語句(替換%20,%3A等)。

想法?

回答

1

這是一個很好的功能請求,但目前沒有內置的提供URL解碼的BigQuery功能。

+0

是否有鏈接到此功能請求? – Tjorriemorrie

+0

https://code.google.com/p/google-bigquery/issues/detail?id=1&q=url –

1

另一個解決方法是使用用戶定義的函數。

#standardSQL 
CREATE TEMPORARY FUNCTION URL_DECODE(enc STRING) 
RETURNS STRING 
LANGUAGE js AS """ 
    try { 
    return decodeURI(enc);; 
    } catch (e) { return null } 
    return null; 
"""; 

SELECT ven_session, 
    URL_DECODE(REGEXP_EXTRACT(para,r'&kw=(\w|[^&]*)')) AS q 
FROM raas_system.weblog_20170327 
WHERE para like '%&kw=%' 
LIMIT 10