AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


Headless 指标解析原理
发布日期:2024-11-09 08:45:46 浏览次数: 1553 来源:SuperSonic超音数


前文介绍了如何进行建模、如何创建指标;本文主要介绍基于度量,已有指标,原始字段三种模式定义新指标后,如何对其进行解析转换成查询引擎可执行的SQL语义。


原子元素和指标

原子元素:在模型已经定义好能够被模型识别的字段和度量。

指标:由原子元素通过SQL表达式定义。

衍生指标:  由指标通过SQL表达式定义。


解析过程

Headless接收到由Chat发来的SQL查询时,主要通过指标识别-定义拆解-指标替换三个步骤进行解析。

识别:通过对SQL进行解析,识别出查询中所用到的指标。
拆解:通过指标的元数据定义,将指标拆解成下一层的指标或者原始定义。
替换:当拆解到最底层原子的定义,无法继续往下拆解时,使用原子定义对指标进行替换。

聚合方法的处理:由于LLM给出的指标聚合方法可能和指标定义的不一致,目前主要分两种情况进行处理


(1)  基于单一度量创建的指标,聚合方法通过以下方式依次决定。


a.  通过调用参数AggOption指定,其中NATIVE将忽略语义模型中度量的聚合方法,采用SQL或者请求数据中定义的方法。
b.  AggOption为DEFAULT将采用语义模型中度量的聚合方法,语义模型中时间维度的聚合粒度为None, 则不采用度量的聚合方法。


(2)  基于多个度量,字段,指标创建的指标,其聚合方法以定义的为准,忽略LLM生成的SQL中的聚合方法。



以下通过一个例子进行说明


指标 PV=PV0+PV1  

       PV0=SUM(case when f0='a' then f1 else 0 end) 

       PV1=m0+m1  

其中PV  PV0 PV1  为指标,f0,f1 为字段,m0,m1为度量




select sum(PV) from tb --PV是一个指标定义,原始模型中并不存在,直接交由引擎无法查询--解析后变成select ( SUM(case when f0='a' then f1 else 0 end) )+(SUM(m0)+SUM(m1)) from tb --f0,f1,m0,m1都是模型中存在的原始字段,查询可以直接识别


注意事项


1.  指标不可引用自身指标


指标的拆解存在一个循环递归的过程,引用自身指标进行定义会导致无法跳出拆解过程,目前后台界面对此做了限制,不允许引用一个非字段非度量定义的指标。


2.  表达式要符合规范


(1)表达式采用SQL进行定义,因此需要符合通用的SQL表达式语法,否则SQL解析失败,指标将无法正常替换。

(2)表达式引用的字段,度量,指标需要从待选列表中选择,否则解析时无法识别到引用的元素时,指标将无法正常替换。


53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询