用于 a/b 测试的蜂巢散列
hive hashing for a/b testing
我正在尝试将散列过程从 MySql 转换为配置单元。在配置单元中,我的代码因以下错误而失败
ParseException line 6:7 cannot recognize input near '0xffffff' '>' '50' in expression specificati
如何在配置单元中写入十六进制数 0xffffff
MySQL 代码(从参考 http://blog.richardweiss.org/2016/12/25/hash-splits.html:
中得到 MySQL 逻辑
SELECT if(
conv(
substr(
md5(concat(ID, '-', SALT)),
1, 6),
16, 10)/0xffffff > CONTROL_GROUP_SIZE, 't', 'c')
蜂巢代码:
SELECT if(
conv(
substr(
md5(concat('12345', '-','xxx2017')),
1, 6),
16,10)/0xffffff > 50, 't', 'c')
Hive 无法识别十六进制表示,从 0x
开始,如 Python 中一样。因此,只需使用 'ffffff'
即可。此外,由于您实际上是在进行小数除法,因此您可以添加另一个 conv
函数将其转换为小数。
SELECT if(
conv(
substr(
md5(concat('12345', '-','xxx2017')),
1, 6),
16,10)/conv('ffffff',16,10) > 50, 't', 'c')
我正在尝试将散列过程从 MySql 转换为配置单元。在配置单元中,我的代码因以下错误而失败
ParseException line 6:7 cannot recognize input near '0xffffff' '>' '50' in expression specificati
如何在配置单元中写入十六进制数 0xffffff
MySQL 代码(从参考 http://blog.richardweiss.org/2016/12/25/hash-splits.html:
中得到 MySQL 逻辑SELECT if(
conv(
substr(
md5(concat(ID, '-', SALT)),
1, 6),
16, 10)/0xffffff > CONTROL_GROUP_SIZE, 't', 'c')
蜂巢代码:
SELECT if(
conv(
substr(
md5(concat('12345', '-','xxx2017')),
1, 6),
16,10)/0xffffff > 50, 't', 'c')
Hive 无法识别十六进制表示,从 0x
开始,如 Python 中一样。因此,只需使用 'ffffff'
即可。此外,由于您实际上是在进行小数除法,因此您可以添加另一个 conv
函数将其转换为小数。
SELECT if(
conv(
substr(
md5(concat('12345', '-','xxx2017')),
1, 6),
16,10)/conv('ffffff',16,10) > 50, 't', 'c')