You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ADX中Base36与Base10互转:内置函数查询及自定义函数调用问题

问题解答

1. ADX是否提供Base36与Base10互相转换的内置函数?

ADX目前没有提供Base36与Base10直接互相转换的内置函数,这类转换需要通过自定义函数实现。

2. 自定义函数无法在extend中调用的解决办法

你的自定义函数返回的是表格型结果(通过range生成表格后用summarize聚合),而extend语句需要的是标量值,因此会触发语义错误。需要将函数修改为标量函数,避免使用表格型操作,改用标量字符串/数组处理逻辑。

修改后的标量函数代码

.create-or-alter function 
    with (folder = "utils", docstring = "将Base36后缀的VM名称转换为带Base10后缀的格式(xxx-xxx-vmss000001 -> xxx-xxx-vmss_1)", skipvalidation = "true") 
    convert_to_base10(node:string) 
{
    let suffix_len = 6;
    // 提取Base36后缀(最后6位)
    let base36_suffix = substring(node, strlen(node) - suffix_len, suffix_len);
    // 提取VM前缀(到vmss结尾)
    let prefix = substring(node, 0, indexof(node, 'vmss') + 4);
    // Base36字符到数值的映射
    let char_map = dynamic({'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9,
                           'a':10,'b':11,'c':12,'d':13,'e':14,'f':15,'g':16,'h':17,'i':18,'j':19,
                           'k':20,'l':21,'m':22,'n':23,'o':24,'p':25,'q':26,'r':27,'s':28,'t':29,
                           'u':30,'v':31,'w':32,'x':33,'y':34,'z':35});
    // 反转后缀字符串,方便按位计算权重
    let reversed_suffix = reverse(base36_suffix);
    // 计算每个字符的权重并求和
    let base10_value = array_sum(array_map(range(0, strlen(reversed_suffix)-1, 1), (i) => 
        tolong(char_map[tostring(substring(reversed_suffix, i, 1))]) * pow(36, i)
    ));
    // 拼接前缀和转换后的Base10数值
    strcat(prefix, '_', tostring(base10_value))
}

使用示例

修改后即可在extend语句中直接调用:

// 假设存在包含VM名称的表格
VMs
| extend converted_name = convert_to_base10(vm_name)

内容的提问来源于stack exchange,提问作者A. Scobie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 17:35:10