上层尽量简单的封装请求,所以它定义为标准的SQL,代码里告诉Calcite,虚拟出来的表是什么、字段是什么、字段类型是什么等,整体抽象为一个个Schema,对于我们来说就查Calcite虚拟出来东西,不用关心底层真正对接了哪些数据源,底层通过定义各种adapter,来对接不同的查询和存储引擎
自定义解析

  1. 创建模型,model.json
  2. 自定义SchemaFactory,CsvSchemaFactory
  3. 自定义Schema,CsvSchema
  4. 自定义Table,CsvTable、CsvScannableTable
  5. 自定义Enumerator,CsvEnumerator

Calcite 主要功能

SQL 解析
SQL 校验
查询优化
SQL 生成器
数据连接

Catelog: 主要定义SQL语义相关的元数据与命名空间。
SQL parser: 主要是把SQL转化成AST.
SQL validator: 通过Catalog来校证AST.
Query optimizer: 将AST转化成物理执行计划、优化物理执行计划.
SQL generator: 反向将物理执行计划转化成SQL语句.

属性   描述
approximateDecimal  是否可以接受DECIMAL类型上的聚合函数的近似结果
approximateDistinctCount    是否可以接受聚合函数COUNT(DISTINCT …)的近似结果
approximateTopN 是否可以接受”TopN”查询(ORDER BY aggFun() DESC LIMIT n)的近似结果
caseSensitive   标识符是否区分大小写。如果未指定,则使用来自于lex的值。
conformance SQL一致性级别。值:DEFAULT(默认,类似于PRAGMATIC_2003),LENIENT,MYSQL_5,ORACLE_10,ORACLE_12,PRAGMATIC_99,PRAGMATIC_2003,STRICT_92,STRICT_99,STRICT_2003,SQL_SERVER_2008。
createMaterializations  Calcite是否创建物化的东西。默认false
defaultNullCollation    如果在查询中既不指定NULLS FIRST也不指定NULLS LAST,应如何对NULL值进行排序。缺省值为HIGH,与Oracle相同,对NULL值进行排序。
druidFetch  执行一次SELECT查询时,Druid适配器应该读取多少行。
forceDecorrelate    计划器是否应该尽可能地相互关联。默认为true。
fun 内置函数和运算符的集合。有效值是“标准”(默认),“oracle”,“空间”,并可以使用逗号连接组合,例如“oracle,spatial”。
lex 词汇(关键字)策略。值是ORACLE(默认),MYSQL,MYSQL_ANSI,SQL_SERVER,JAVA。
materializationsEnabled Calcite是否使用物化的东西。默认false
model   JSON模型文件的URI
parserFactory   解析器工厂。实现SqlParserImplFactory 接口的类的名称,并且有一个公有的默认构造方法或者INSTANCE常量
quoting 如何引用标识符。值是DOUBLE_QUOTE,BACK_QUOTE,BRACKET。如果未指定,则使用来自于lex的值。
quotedCasing    如何存储使用了引号的标识符。值是UNCHANGED, TO_UPPER, TO_LOWER。如果未指定,则使用来自于lex的值。
schema  初始化schema名称
schemaFactory   Schema工厂。实现SchemaFactory接口的类的名称,并且有一个公有的默认构造方法或者INSTANCE常量。如果指定了model,此属性会被忽略。
schemaType  Schema类型。值必须是“MAP”(默认值),“JDBC”或“CUSTOM”。(如果schemaFactory指定则隐式指定为CUSTOM类型)如果指定了model,此属性会被忽略。
spark   指定是否应将Spark用作无法推送到源系统的处理引擎。如果为false(默认值),则Calcite将生成实现了Enumerable接口的代码。
timeZone    时区,例如“gmt-3”。默认是JVM的时区。
typeSystem  类型系统。实现了接口RelDataTypeSystem的类的名称,并具有公有的默认构造函数或INSTANCE常量。
unquotedCasing  如果标识符未被引用,如何存储。有效值是UNCHANGED,TO_UPPER,TO_LOWER。如果未指定,则使用来自于lex的值。

calcite learn相关推荐

  1. 【Kaggle Learn】Python 1-4

    [Kaggle Learn]Python https://www.kaggle.com/learn/python 一. Hello, Python A quick introduction to Py ...

  2. Blender赛车动画制作学习教程 Learn Race Car Animation with Blender

    使用Blender 2.93创建您自己的惊人汽车动画 你会学到什么 Blender的界面和导航 建模 UV制图 材料 动画 照明设备 渲染 合成 要求 下载并安装Blender.免费下载和免费用于任何 ...

  3. Blender3.0动画制作入门学习教程 Learn Animation with Blender (2021)

    要求 下载并安装Blender.免费下载和免费用于任何目的. 描述 加入我的动画课程. 在本课程中,我将从头开始讲述在Blender中创建动画场景的过程. 从第一步到最终渲染.在这个课程中,我们将使用 ...

  4. Unity与C#创建一个3D平台游戏 Learn to Create a 3D Platformer Game with Unity C#

    游戏开发变得容易了.使用Unity学习C#并创建您自己的3D平台! 你会学到什么 学习现代通用编程语言C#. 了解Unity中3D开发的功能 发展强大的可转移的解决问题的技能 了解游戏开发过程 了解面 ...

  5. 学会在Unity中创建一个Match-3益智游戏 Learn To Create a Match-3 Puzzle Game in Unity

    MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz,2 Ch 语言:英语+中英文字幕(根据原英文字幕机译更准确) |时长:48场讲座(6h 38m) |大小解压后:2.8 G ...

  6. Unity中创建本地多人游戏完整案例视频教程 Learn To Create A Local Multiplayer Game In Unity

    Unity中创建本地多人游戏完整案例视频教程 Learn To Create A Local Multiplayer Game In Unity MP4 |视频:h264,1280x720 |音频:A ...

  7. Unity 3D游戏代码编程学习教程 Full Guide To Unity 3D C#: Learn To Code Making 3D Games

    Unity 3D游戏代码编程学习教程 Full Guide To Unity 3D & C#: Learn To Code Making 3D Games Full Guide To Unit ...

  8. 读书笔记2013第10本:《学得少却考得好Learn More Study Less》

    <学得少却考得好Learn More Study Less>这本书最早是从褪墨网站上看到的,crowncheng翻译了全文.这本书介绍了不少学习方法,非常适合在校的学生,原文的作者Scot ...

  9. The Road to learn React书籍学习笔记(第三章)

    代码详情 声明周期方法 通过之前的学习,可以了解到ES6 类组件中的生命周期方法 constructor() 和 render() constructor() 构造函数只有在组件实例化并插入到 DOM ...

最新文章

  1. Android系统中Parcelable和Serializable的区别
  2. python实现文件下载-python实现上传下载文件功能
  3. Leet Code OJ 28. Implement strStr() [Difficulty: Easy]
  4. Android开发面试题之Activity启动模式讲解总结
  5. 深入浅出逻辑组合电路(2)
  6. debconf-set-selections mysql_docker 静默安装mysql
  7. 循环矩阵与傅里叶相关的几点性质
  8. 迈足狂奔!铁塔公司:目前北京已建好4400多座大型5G基站
  9. c# 将doc转换为docx
  10. PHP中几种b2b,用php开发 b2b 用什么架构?
  11. BugkuCTF 你必须让他停下
  12. set学习(系统的学习)
  13. [Java] 蓝桥杯BASIC-14 基础练习 时间转换
  14. 叙述计算机网络的分类与拓扑结构,计算机的网络中有线网络和无线网络最主要的区别是()。...
  15. 基于CarMaker的C-NCAP主动安全系统试验仿真(一)
  16. 2035年进入现代化交通强国行列
  17. QQ邮箱收不到GitHub验证邮件
  18. 大小写转换(大小写转换键是哪个键)
  19. Replication Failed to register VRMS. Operation ID: bef61197-acf3-46ac-bffd-d457
  20. 电力窃漏电用户自动识别(SPSS Modeler)

热门文章

  1. [转]Java咖啡馆---叹咖啡
  2. macbook配置java环境变量_Mac配置JDK环境变量的详细操作
  3. 职业能力测试之逻辑(一)
  4. (新)B站视频播放源地址获取及B站视频下载
  5. Ozone数据探查服务Recon2.0设计
  6. SPI配置ADC芯片_明德扬FPGA学习心得
  7. Definer 预言机攻击事件分析
  8. Edge、Chrome 1月12日之后继续使用Flash的方法(超级专业,高能预警)
  9. python_生成器简介
  10. 游戏开发之Unity2021熟悉基本工具