0
我使用aws中的athena來解析一堆日誌文件。查詢的標準是一個base64編碼的子字符串。 (「adId = eW0vMU0zeGE5NUE4NjcyLzYzNDgvalhkVGhkZmxfODQwS182NDB4MzYwLm1wNAo =%somejunk」)sql查詢中的base64子串
據我所知,這個查詢沒有問題。
SELECT count(*)
FROM reporting."logs"
WHERE sc_status NOT LIKE '404'
AND cs_cookie LIKE 'adId%'
AND cs_uri_stem LIKE'%.m3u8'
AND FROM_UTF8(from_base64(regexp_extract(cs_cookie, '(adId=)([^ ]+?)\%(.*)',2))) LIKE '%mp4' limit 1 ;
它給我的錯誤INVALID_FUNCTION_ARGUMENT:非法的base64字符5F
不同的版本,使用的所有組件,不返回一個錯誤,給了我,在MP4結束值。
SELECT FROM_UTF8(from_base64(regexp_extract(cs_cookie, '(adId=)([^ ]+?)\%(.*)',2)))
FROM reporting."logs"
WHERE sc_status NOT LIKE '404'
AND cs_cookie LIKE 'adId%'
AND cs_uri_stem LIKE'%.m3u8' limit 1 ;
返回值沒有任何真正奇怪的地方。
ym/1M3xa95A8672/6348/jXdThdfl_840K_640x360.mp4
任何想法,爲什麼我會得到一個錯誤或如何格式化,所以它會工作?
基於64位功能作爲直接的直通到內置在Java中Base64編碼實現的:https://docs.oracle.com/javase/8/docs/api/java/ UTIL/Base64.html –