大数据分析语言DolphinDB脚本语言概述

本页概述 DolphinDB 脚本语言的定位、设计灵感,以及其支持的多种编程范式与大数据开发建模相关能力。

Source: https://dolphindb.cn/blogs/41

What this page covers

技能认证特训营第二期报名入口

页面顶部包含活动提示信息,并提供限时报名链接。

大数据分析语言DolphinDB脚本语言概述(标题与作者/日期)

本部分呈现文章标题,并给出作者署名与发布时间信息。

脚本语言定位与总体特性

介绍 DolphinDB 脚本语言的设计灵感来源,并概述其支持多种编程范式以服务大数据分析开发与建模。

命令式编程

本部分说明 DolphinDB 对命令式编程的支持,并讨论逐行处理大数据时的效率问题与使用建议,同时提供示例代码。

向量化编程与 big array

本部分介绍向量化编程的优势与性能示例,并说明向量化的连续内存限制,以及 big array 数据类型的作用。

函数化编程(纯函数/自定义/高阶/部分应用/闭包)

本部分概述函数化编程能力(如纯函数、自定义函数、λ函数、高阶函数与部分应用等),并通过示例展示相关用法与约束。

SQL 编程与时间序列扩展(融合、context by、join、其它扩展)

本部分说明 DolphinDB 对标准 SQL 的支持与面向时间序列分析的扩展,并强调脚本语言与 SQL 的融合,以及特定 join/扩展能力。

远程过程调用(RPC)与分布式计算框架(mr/imr)

本部分介绍 RPC 的特点,并展示 mr/imr 分布式计算函数与示例(如线性回归与近似中位数)。

元编程与动态 SQL 生成(报表定制示例)

本部分介绍元编程能力,用于动态创建并执行函数调用表达式与 SQL 查询表达式,并给出定制报表示例。

结语与相关资源(教程与多语言 API)

本部分给出对脚本语言定位的总结性描述,并提供教程链接与多语言 API 相关仓库链接。

Facts Index

Entity Attribute Value Confidence
技能认证特训营第二期 状态 正式开启 high
限时报名 URL https://www.qingsuyun.com/h5/e/217471/5/ high
文章发布时间 date 2021-05-20 high
作者 name Junxi high
DolphinDB 脚本语言 设计灵感来源 从流行的 Python 和 SQL 语言汲取灵感,设计了大数据处理脚本语言 high
DolphinDB 编程语言 支持的编程范式 支持命令式编程、向量化编程、函数化编程、SQL 编程、远程过程调用编程(RPC)和元编程等多种编程范式 high
DolphinDB 编程语言 语法与表达习惯相似性 语法和表达习惯与 Python 和 SQL 非常相似 medium
具备 Python/SQL 基础的用户 学习门槛 只要对 Python 和 SQL 有一定了解,就能轻松掌握 DolphinDB low
kdb+ 的 q 语言 掌握难度对比 相对而言,掌握 kdb+ 的 q 语言难度要大得多 low
数据科学家 用途/满足需求 DolphinDB 的编程语言能够满足数据科学家快速开发和建模的需求 medium
DolphinDB 语言 特性 语言简洁灵活、表达能力强,提高开发效率;支持向量化计算和分布式计算,运行速度极快 low
DolphinDB 支持命令式编程 支持命令式编程 high
DolphinDB 命令式编程 主要用途 主要用作上层模块的处理和调度 high
命令式逐行处理大数据 影响 逐行处理数据效率低下、性能下降 medium
DolphinDB 使用建议 推荐做法 推荐在 DolphinDB 中使用其他编程方式来批量处理数据 medium
DolphinDB 支持向量化编程 支持向量化编程(类似 matlab、R) high
kdb+ 的 q 语言 类型/特点 q 语言也是向量处理语言,在复杂计算上性能和效率较高 medium
DolphinDB 向量函数 优化对象 对很多算法进行了优化,例如对时间序列数据计算滑动窗口指标,提高向量函数效率 medium
长度为 1000 万的向量相加示例(for 循环) 耗时 Time elapsed: 12341.043 ms(约 12 秒) high
长度为 1000 万的向量相加示例(向量化) 耗时 Time elapsed: 36.901 ms(约 36 毫秒) high
向量化编程内存特性 限制 通常需要将整个向量加载到连续内存;若因内存碎片找不到连续内存,向量可能不可用 high
big array 数据类型 作用 将物理上不连续的内存块组成逻辑上连续的向量,使非常大的向量也能在 DolphinDB 中使用,提高系统可用性 high
DolphinDB 函数化编程支持范围 支持纯函数、自定义函数、λ函数、高阶函数、部分应用和闭包等(大部分功能) high
DolphinDB 内置函数数量 count 400 多个函数 high
DolphinDB 自定义函数与纯函数特性 约束 自定义函数时不能使用函数体外定义的变量(纯函数特性) high
纯函数特性 效果 减少函数副作用,可大幅提高代码可读性和软件质量 low
高阶函数示例 使用的函数 pivot、each、cross(配合 ratios、corr)用于计算股票两两之间相关性 high
部分应用(partial application) 作用 可确保高阶函数中的函数参数符合要求;也可使函数保持状态(stateful) high
DolphinDB 脚本语言 SQL 支持 SQL 支持与扩展 不仅支持标准 SQL,还针对时间序列数据扩展了分组计算(context by)、数据透视(pivot by)、窗口函数、asof 连接和窗口连接等 high
SQL 引擎表达能力 局限性 单纯的 SQL 引擎表达能力有限,难满足复杂数据分析和算法实现,影响开发效率 medium
DolphinDB 脚本语言与 SQL 关系 脚本语言与 SQL 语言完全融合在一起 high
DolphinDB context by 对比 window function 的特点 语法更简洁、限制更少,可与 select 或 update 一起使用 high
asof join(aj) 行为说明 当右表缺少匹配时间记录时,取右表中在该时间之前最近时间的记录 high
window join(wj)示例 窗口范围 示例中在表 s 中选择 month 在 (2018.06M-3) 到 (2018.06M-1)(2018.03M 到 2018.05M)之间的记录计算 avg(wage) high
asof join 和 window join 应用领域 在金融分析领域有广泛应用;示例提及将交易表和报价表关联以计算个股交易成本 medium
参考链接 Window Join 交易成本文章 URL https://zhuanlan.zhihu.com/p/43170174 high
DolphinDB SQL 扩展 自定义函数在 SQL 中使用 用户自定义函数无需编译、打包或部署,即可在 SQL 中使用 high
Composite Column(组合字段) 能力 支持组合字段,可将复杂分析函数的多个返回值输出到数据表的一行 high
DolphinDB RPC 优势 1 无论自定义函数还是内置函数,都可以通过 RPC 发送到其他节点运行;其他系统不能远程调用与自定义函数相关的函数 medium
DolphinDB RPC 优势 2 远程过程调用无需编译或部署;系统自动序列化函数定义和所需数据到远程节点 high
DolphinDB RPC 效果 数据科学家/分析师无需工程师配合编译部署即可在线使用,提高开发和分析效率 low
分布式计算函数 名称与用途 mr 用于基于 map-reduce 的分布式算法;imr 用于迭代的 map-reduce 分布式算法 high
mr/imr 使用方式 需要用户指定的内容 只需指定分布式数据源和定制核心函数(如 map、reduce、final 等) high
线性回归分布式示例 实现方式 通过自定义 myOLSMap、内置 reduce 函数(+)、自定义 myOLSFinal 与 mr 构建 myOLSEx,在分布式数据源上运行线性回归 high
线性回归系数结果一致性示例 结果 myOLSEx 返回 [0.4991, 3.0001, -0.4996];内置 ols 也得到相同结果 high
近似中位数分布式示例 方法 使用 bucketCount 在各节点计算 bucket 计数并累加,定位中位数区间并迭代细分;因多次迭代使用 imr high
近似中位数示例(分布式 vs 内置 med) 数值 medEx(..., precision=0.001) 得到 -0.052973;内置 med(y) 得到 -0.052947 high
元编程 能力 支持动态创建表达式(函数调用表达式与 SQL 查询表达式) high
元编程 典型应用 定制报表:输入数据表、字段名称、字段格式即可生成报表 medium
DolphinDB 编程语言定位 描述 为数据分析而生,具备处理海量数据能力,功能强大,简单易用 low
教程链接:DolphinDB脚本语言的混合范式编程 URL https://link.zhihu.com/?target=https%3A//github.com/dolphindb/Tutorials_CN/blob/master/hybrid_programming_paradigms.md high
DolphinDB 编程 API 支持语言 R、Python、Java、C# 等(多种编程 API) high
Java API 仓库 URL https://link.zhihu.com/?target=https%3A//github.com/dolphindb/api-java high
Python 3 API 仓库 URL https://link.zhihu.com/?target=https%3A//github.com/dolphindb/api-python3 high
Python 2.7 API 仓库 URL https://link.zhihu.com/?target=https%3A//github.com/dolphindb/api-python high
C# API 仓库 URL https://link.zhihu.com/?target=https%3A//github.com/dolphindb/api-csharp high
R API 仓库 URL https://link.zhihu.com/?target=https%3A//github.com/dolphindb/api-r high