阅读准备 ========= .. important:: ChannelQuery 脚本执行只会返回主视图(*名称被强制约定为: this*)的数据。 表达式语句如果不指定所属的或者要被修改的视图名,则操作默认影响主视图。 更直白点,可以理解为就是对内存中不管是加载外部数据源形成的和动态创建的临时视图,进行一系列的关联交并、过滤、排序、数据切割等操作叠加修改主视图并对外输出。 所有操作都是围绕一个优质的主数据集的诞生而展开。 记住以下符号所表达的含义有助于更快掌握ChannelQuery的用法,因为在后面章节会用它们来描述ChannelQuery的语法结构: 1. [expr]: 被方括号包裹的 ``expr`` 表示表达式可选,执行时会有默认选项处理逻辑 .. code-block:: sql top 10 [of viewName] top 10 of sales; top 10; 最后一条语句表示,如果不指定拿哪个视图的前10条记录,则默认拿主视图的前10条记录。 2. {expr}: 被大括号包裹的 ``expr`` 是SQL表达式(标准SQL/SparkSQL相应的表达式) .. code-block:: lua -- 过滤 filter viewName { name like 'Jack%' and salary>=3500 }; -- 新增列 column newColName as { concat(col1, col2, col3) }; 比如第一句过滤,后面带的是 Where 条件过滤表达式; 第二句新增列,后面带的是 Select 列选择表达式,可对其它列进行合并与拆分。 3. \`列 名称\`: 包裹中文视图名或者中文列名或者包含空格的列名,以免运行期出错