FML(Fast Modeling Language)是一种类似SQL的语言,专为维度建模而设计。它旨在实现快速建模,遵循"Kimball维度建模技术理论"和"阿里巴巴OneData理论"。FML从SQL中继承了许多特性。例如,在创建模型时,FML研究并参考了标准的DDL语法,并在此基础上进行了扩展。在设计模型时,您不再需要关注不同种类大数据引擎的具体规则。FML转换器将把您的模型转换为SQL语法,可以直接被特定类型的引擎读取。
特性
- 一种专门为维度建模设计的类SQL语言。
- 支持在数据仓库建立过程中定义语法,如:数仓规划、字段标准、码表、数据指标。
- 基于Java构建,您可以使用语法结构API轻松构建模型。
- 使用Transform API将模型转换为常见引擎的各种语法,如:Hive、Hologres、Mysql、Clickhouse等
- 支持JDBC驱动模式,与模型引擎交互。
解析示例
import com.aliyun.fastmodel.core.parser.FastModelParser; import com.aliyun.fastmodel.core.parser.FastModelParserFactory; public class HelloFML { //单例 private static final FastModelParser FAST_MODEL_PARSER = FastModelParserFactory.getInstance().get(); public static void main(String[] args) { String fml = "create dim table t_1 alias 'alias_name' (col bigint alias 'alias_name' comment 'col_comment') comment 'comment';"; CreateDimTable createDimTable = FAST_MODEL_PARSER.parseStatement(fml); //do your work } }
Transformer示例
import com.aliyun.fastmodel.core.tree.BaseStatement; import com.aliyun.fastmodel.transform.api.Transformer; import com.aliyun.fastmodel.transform.api.TransformerFactory; import com.aliyun.fastmodel.transform.api.context.TransformContext; import com.aliyun.fastmodel.transform.api.dialect.DialectMeta; public class HelloFMLTransformer { public static void main(String[] args) { DialectMeta dialectMeta = Transformer < BaseStatement > statementTransformer = TransformerFactory.getInstance().get(dialectMeta); statementTransformer.transform(statement, context).getNode(); } }
评论