Google bigquery 语法错误:应为";(“或”、“或”关键字选择,但在BigQuery上的[20:46]处得到了“或”
我正在尝试对email列中的值进行散列,并将它们插入salt列 我是BigQuery的新手,对语法非常不熟悉。我将s作为电子邮件字符串输入,并将其转换为哈希值,该值将作为字符串返回Google bigquery 语法错误:应为";(“或”、“或”关键字选择,但在BigQuery上的[20:46]处得到了“或”,google-bigquery,Google Bigquery,我正在尝试对email列中的值进行散列,并将它们插入salt列 我是BigQuery的新手,对语法非常不熟悉。我将s作为电子邮件字符串输入,并将其转换为哈希值,该值将作为字符串返回 CREATE TEMP FUNCTION SaltforEmail(s STRING) RETURNS STRING LANGUAGE js AS """ var hash = 0; if (s.length == 0) return h
CREATE TEMP FUNCTION SaltforEmail(s STRING)
RETURNS STRING
LANGUAGE js AS """
var hash = 0;
if (s.length == 0) return hash;
for (i = 0; i < s.length; i++) {
char = s.charCodeAt(i);
hash = ((hash << 5) - hash) + char;
hash |= 0;
}
return toString(hash);
""";
with s as (SELECT Email as everyone
FROM `study-in-india-272211.Hashing.Mapping`);
INSERT `study-in-india-272211.Hashing.Mapping` (salt)
VALUES (SaltforEmail(s));
创建临时函数SaltforEmail(s字符串)
返回字符串
语言js为“”
var散列=0;
如果(s.length==0)返回哈希;
对于(i=0;i hash=((hash首先,我不明白您想在hash函数中执行什么操作,但它不返回字符串。这就是为什么我更改了函数以仅返回hash整数。您可能需要检查函数本身
其次,您需要的是更新表而不是更新。因此,您可以使用该查询:
CREATE TEMP FUNCTION SaltforEmail(s STRING)
RETURNS STRING
LANGUAGE js AS """
var hash = 0;
if (s.length == 0) return hash;
for (i = 0; i < s.length; i++) {
char = s.charCodeAt(i);
hash = ((hash << 5) - hash) + char;
hash |= 0;
}
return hash;
""";
UPDATE `study-in-india-272211.Hashing.Mapping`
set salt = SaltforEmail(Email)
创建临时函数SaltforEmail(s字符串)
返回字符串
语言js为“”
var散列=0;
如果(s.length==0)返回哈希;
对于(i=0;i hash=((hash在此之后添加了一个WHERE子句,并将if改为s!=null。非常感谢。这是一个愚蠢的错误(facepalm)