我在aws中使用athena来解析一堆日志文件 . 查询的标准是base64编码的子字符串 . ( “ADID = eW0vMU0zeGE5NUE4NjcyLzYzNDgvalhkVGhkZmxfODQwS182NDB4MzYwLm1wNAo =%somejunk”)
据我所知,这个查询没有问题 .
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:Illegal base64 character 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
有关为什么我会收到错误或如何格式化以便它可以工作的任何想法?
1 回答
看起来有一些不安全的角色,因为它是一个网址 .
不得不替换一些无效的base64字符 .
工作版