我使用包含url編碼列的gzip日誌文件。 (空格字符編碼爲「%20」等)。使用BigQuery中的網址編碼值
我的計劃是直接將這些文件從Google Cloud Storage導入到BigQuery中。
我在Load config中找不到任何選項來在導入過程中自動解碼值。
我想你不會在我的所有疑問中使用一系列REGEXP_REPLACE。
任何想法都會避免解析所有日誌並在將它們導入BigQuery之前轉義所有這些字符(如果它們中的一個是分隔符會很危險)?
我使用包含url編碼列的gzip日誌文件。 (空格字符編碼爲「%20」等)。使用BigQuery中的網址編碼值
我的計劃是直接將這些文件從Google Cloud Storage導入到BigQuery中。
我在Load config中找不到任何選項來在導入過程中自動解碼值。
我想你不會在我的所有疑問中使用一系列REGEXP_REPLACE。
任何想法都會避免解析所有日誌並在將它們導入BigQuery之前轉義所有這些字符(如果它們中的一個是分隔符會很危險)?
最有可能你已經結束了類似下面:O)
SELECT url FROM
js(
(SELECT url FROM
(SELECT 'http://example.com/query?q=my%20query%20string' AS url),
(SELECT 'http://example.com/query?q=your%20query%20string' AS url),
(SELECT 'http://example.com/query?q=his%20query%20string' AS url)
),
// Input columns.
url,
// Output schema.
"[
{name: 'url', type:'string'}]",
// The function.
"function(r, emit) {
var url = decodeURI(r.url);
emit({
url: url
});
}"
)
接受的答案如果傳統的SQL。
對於標準SQL:
#standardSQL
CREATE TEMPORARY FUNCTION DECODE_URI_COMPONENT(path STRING)
RETURNS STRING
LANGUAGE js AS """
if (path == null) return null;
try {
return decodeURIComponent(path);
} catch (e) {
return path;
}
""";
WITH source AS (SELECT "/work.json?myfield=R%C3%A9gions%2CSport" AS path)
SELECT DECODE_URI_COMPONENT(REGEXP_EXTRACT(path, r"[?&]myfield=([^&]+)")) AS myfield FROM source
這將返回:
myfield
---------------
Régions,Sport
根據http://stackoverflow.com/questions/13831391/bigquery-url-decode,這是現在不可用BigQuery的。 – greeness
按照BigQuery開發人員的要求,我們啓動了一個公共問題跟蹤器來收集功能請求,並允許一個地方報告錯誤。我們將此請求作爲我們的第一項功能請求:http://code.google.com/p/google-bigquery/issues/detail?id = 1「Star」問題以投票支持。 –