【发布时间】:2016-02-11 06:59:30
【问题描述】:
我定义了以下 UDF(注意我的表有一个“Id”和一个带有子字段“RawHex”的“Reading”对象):
// UDF definition
function hexdecode(row, emit) {
emit({
Id: row.Id,
converted: decodeHelper(row.Reading.Raw)
});
}
// Helper function with error handling
function decodeHelper(s) {
try {
return parseInt(s, 16);
} catch (ex) {
return s;
}
}
// UDF registration
bigquery.defineFunction(
'hexdecode', // Name used to call the function from SQL
['Id', 'Reading.Raw'], // Input column names
// JSON representation of the output schema
[{name: 'Id', type: 'STRING'},
{name: 'converted', type: 'INTEGER'}],
hexdecode // The function reference
);
我的查询是:
select Id, converted from
hexdecode(
select r.Id, r.Reading.Raw from Example.TagRaw2 r
)
通过将以下 JSON 上传到表 Example.TagRaw2 生成
{"Id":"ABC","Reading":{"Raw":"0004"}}
{"Id":"CDE","Reading":{"Raw":"000b"}}
我希望这会将我的列从十六进制转换为整数,但如果返回一个几乎没有意义的条目。
知道我做错了什么吗?
编辑:我添加了一个示例 JSON 来上传以尝试重现问题.. 但它现在似乎可以工作了。如果我能找出最初的错误,我会再次更新,但上面的 UDF 似乎完全符合我的要求。
【问题讨论】:
-
为什么要发出“TagId”,而将架构名称定义为“Id”?
-
您介意在/输出中包含样本吗?
-
有点难,因为我不确定我可以公开发布什么 - 我会尝试使用合成集重新创建问题。
-
请在你这样做的时候ping一下!
-
@FelipeHoffa 我添加了一个 JSON,您可以上传以获取我的表格布局...不幸的是,现在查询工作正常...
标签: google-bigquery udf