cube.js 学习(十一)cube + gitbase 分析git 代码
这个是一个简单的demo,使用gitbase+cube 分析git 仓库代码
需求
我们平时使用的gitlab,或者gogs 等git 仓库管理工具,有自己的管理强项,但是对于分析上可能就不是那么强大了
这个就需要我们进行git 代码文件级别的分析了,可选的工具很多gitstats 就是一个不错的选择,但是大部分是基于
单仓库管理的,gitbase 则不同,给予我们提供了大批量的分析能力
环境准备
- gitbase 安装
参考官方文档,直接二进制文件就可以了 - cube.js
这个我们可以通过全局安装,很简单npm install -g cubejs-cli
分析几个git 仓库代码
demo 很简单,但是当前使用的cube-cli 在获取元数据上有点问题(<0.9.0),但是我们可以手动编写cube schema解决
- 初始化cube 项目
cubejs create dalongdemo -d mysql
- 启动gitbase 项目
自己准备git 代码,以下demo 是我自己的环境
gitbase server -v --host=192.168.0.104 -d git-demos
- 修改cube 数据库配置
cube 使用dotenv 解决配置管理,只需要修改.env 文件即可,以下为我自己的环境
CUBEJS_DB_HOST=192.168.0.104
CUBEJS_DB_NAME=gitbasee
CUBEJS_DB_USER=root
CUBEJS_DB_TYPE=mysql
CUBEJS_API_SECRET=c9ad3523f1ccf6e6c0c17654b22baa0c942a1106a4e493c025bca1cbf79b61cc2a019d95b77b34d666ebc6172fd09b4b6d9dd0618ee21da6cda3875295cb4f36
- 手工编写cube schema
因为gitbase 没有提供表的schema 元数据表信息,为了集成cube 需要我们自己编写cube schema ,以下是一个简单的count 聚合操作
cube(`repos`, {
sql: `
select * from repositories
`,
measures: {
count: {
type: `count`
},
},
dimensions: {
repository_id: {
sql: `repository_id`,
type: `string`
}
}
});
- 项目结构
├── index.js
├── package.json
└── schema
└── repos.js
启动&&测试
- 启动cube 项目
yarn dev
效果 

- 简单操作
使用ui 界面操作

- 说明
这个只是简单的操作,实际上我们可以做好多强大的功能,充分利用 gitbase 提供的sql 查询接口,可以做好多很灵活的操作
参考资料
https://docs.sourced.tech/gitbase/using-gitbase/schema
https://cube.dev/docs/cube
cube.js 学习(十一)cube + gitbase 分析git 代码的更多相关文章
- cube.js 学习 cube docker-compose 运行
cube.js 官方为我们也提供了backeng 部署的模型,为了测试方便以下是一个使用docker-compose 运行的demo 项目是一个集成gitbase 的demo,实际可以按照自己的项目修 ...
- cube.js 学习(十)cube 来自官方的学习网站
尽管cube.js 包含了一个doc 站点,但是资料不是很全,同时如果查看了cube github 代码中的一些demo的话,发现还是很不错的 但是一些实践没有在文档展现出来,还好我们可以从cube ...
- cube.js 学习(一)简单项目创建
cube.js 是一个很不错的模块化分析框架,基于schema生成sql 同时内置可代码生成,可以快速的搞定 web 分析应用的开发 安装cli 工具 npm install -g cubejs-cl ...
- cube.js 学习 cube 连接mongodb 试用
cube.js 对于mongodb 的连接是通过mongodb bi connector(mysql 协议)处理的,以下为简单的试用 安装mongo bi connector 这个玩意用docker ...
- cube.js 学习(八)backend部署模式
cube.js 从设计上就进行了系统上的分层,backend,frontend,backend 是cube.js 的核心 对于cube.js backend 的部署官方也提供了好多中方法 部署模型 s ...
- cube.js 学习(七)cube.js type 以及format 说明
cube.js 对于measure以及dimension 提供了丰富的数据类型,基本满足我们常见应用的开发,同时对于不同类型也提供了 格式化的操作 measure类型 number 格式 purc ...
- cube.js 学习(五)cube.js joins 说明
cube.js 也支持join, 参考格式 joins: { TargetCubeName: { relationship: `belongsTo` || `hasMany` || `hasOne ...
- cube.js 学习(四)cube.js cube 说明
cube 是cube.js data schema 的核心,里面定义了生成sql 的说明 一个比较全的schema 例子 cube(`Users`, { sql: `select * from u ...
- cube.js 学习(三)cube.js data schema
cube.js的 data schema 类似graphql 的type 定义,但是cube.js 的data schema 更偏向于dsl, 其中抽象了进行数据分析应用开发中的东西,自己提炼了mea ...
随机推荐
- VMware Workstation 15 Player使用centos页面版本如何查看ip
首先运行要使用的centos镜像,输入密码登陆进去 因为是界面版,所以就不需要再镜像中输入命令,但是因为这样又找不到没法用ifconfig查看ip怎么办? 这个就是类似于一个系统页面版本的linux ...
- 异或序列 [set优化DP]
也许更好的阅读体验 \(\mathcal{Description}\) 有一个长度为 \(n\)的自然数序列 \(a\),要求将这个序列分成至少 \(m\) 个连续子段 每个子段的价值为该子段的所有数 ...
- C#高效编程
一. 使用readonly而不是const const是编译时常量,readonly是运行时常量.如果引用了一个库中的const常量,则在更新了程序集,但应用程序没有重新编译时,运行结果会出错 如程序 ...
- 阿里巴巴 Java 开发手册 (五) 集合处理
1. [强制]关于 hashCode 和 equals 的处理,遵循如下规则: 1) 只要重写 equals,就必须重写 hashCode. 2) 因为 Set 存储的是不重复的对象,依据 hashC ...
- Python进阶----SOCKET套接字基础, 客户端与服务端通信, 执行远端命令.
Python进阶----SOCKET套接字基础, 客户端与服务端通信, 执行远端命令. 一丶socket套接字 什么是socket套接字: 专业理解: socket是应用层与TCP/IP ...
- ES6数组方法总结
关于数组中forEach() .map().filter().reduce().some().every()的总结 1. forEach() let array = [1,2,3,4]; array. ...
- 学习笔记之编程珠玑 Programming Pearls
Programming Pearls (2nd Edition): Jon Bentley: 0785342657883: Amazon.com: Books https://www.amazon.c ...
- 使用原生JS 修改 DIV 属性
本例参考并改进自:https://www.jianshu.com/p/2961d9c317a3 大家可以一起学习!! <!DOCTYPE html> <html lang=" ...
- CI框架结合jQuery实现上传多张图片即时显示
一.Html代码如下: <tr> <td class="txt_r"><span class="orange">* < ...
- webpack练手项目之easySlide(一):初探webpack
最近在学习webpack,正好拿了之前做的一个小组件,图片轮播来做了下练手,让我们一起来初步感受下webpack的神奇魅力. webpack是一个前端的打包管理工具,大家可以前往:http:/ ...