Superset提供两种数据集:物理(表或视图)、虚拟(SQL),前者可以在创建数据集中直接选择表或视图,后者通过SQL编辑器创建,具体可以参考我之前写的《开源轻量级BI平台Superset的SQL编辑器使用指南》。图表的数据源就是数据集,本身数据集也提供了一些实用的功能。本文就来具体介绍一下Superset数据集的使用,以Odoo的项目管理应用模块的项目表:project_project为例来具体说明。在Odoo中,比如模型为,对应物理表则为project_project,也就是.对应_,如下图:
找到模型
打开
字段说明
对象: 名称: 项目 | 类型: 基础对象 瞬态:假 应用: bi_project_template, hr_timesheet, project | ||||||||||||||||||
安全 | |||||||||||||||||||
组 | R | W | C | U | 名称 | ||||||||||||||
计工单 / User: own timesheets only | X | .timesheet.user | |||||||||||||||||
用户类型 / 内部用户 | X | on partners | |||||||||||||||||
项目 / 用户 | X | ||||||||||||||||||
项目 / 管理员 | X | X | X | X | |||||||||||||||
用户类型 / 门户 | X | project_portal | |||||||||||||||||
字段 | |||||||||||||||||||
名称 | 标签 | 类型 | 属性 | Rq | Ro | Tr | Idx | 应用 | |||||||||||
__last_update | 最后修改时间 | 日期时间 | X | project | |||||||||||||||
access_token | 安全令牌 | 字符 | project | ||||||||||||||||
access_url | 门户访问网址 | 字符 | X | project | |||||||||||||||
access_warning | 访问警告 | 文本 | X | project | |||||||||||||||
active | 启用 | 布尔型函数 | project | ||||||||||||||||
activity_date_deadline | 下一个活动截止日期 | 日期 | X | project | |||||||||||||||
activity_exception_decoration | 活动异常装饰 | 选择项 | - 选取 = [ (warning, Alert), (danger, Error), ] | X | project | ||||||||||||||
activity_exception_icon | 图标 | 字符 | X | project | |||||||||||||||
activity_ids | 活动 | 一对多 | - 关系 = mail.activity - 字段 = res_id | project | |||||||||||||||
activity_state | 活动状态 | 选择项 | - 选取 = [ (overdue, Overdue), (today, Today), (planned, Planned), ] | X | project | ||||||||||||||
activity_summary | 下一活动摘要 | 字符 | project | ||||||||||||||||
activity_type_icon | 活动类型图表 | 字符 | X | project | |||||||||||||||
activity_type_id | 下一活动类型 | 多对一 | - 关系 = mail.ac | project | |||||||||||||||
activity_user_id | 负责用户 | 多对一 | - 关系 = res.users | project | |||||||||||||||
alias_bounced_content | 自定义退回消息 | html | X | project | |||||||||||||||
alias_contact | 安全联系人别名 | 选择项 | X | hr, project | |||||||||||||||
alias_defaults | 默认值 | 文本 | X | project | |||||||||||||||
alias_domain | 域名别名 | 字符 | X | project | |||||||||||||||
alias_enabled | Use Email Alias | 布尔型函数 | project | ||||||||||||||||
alias_force_thread_id | 记录线索ID | 整数 | project | ||||||||||||||||
alias_id | 别名 | 多对一 | - 关系 = mail.alias - 删除时= 限制 | X | project | ||||||||||||||
alias_model_id | 模型别名 | 多对一 | - 关系 = ir.model | X | project | ||||||||||||||
alias_name | 别名 | 字符 | project | ||||||||||||||||
alias_parent_model_id | 上级模型 | 多对一 | - 关系 = ir.model | project | |||||||||||||||
alias_parent_thread_id | 上级记录ID | 整数 | project | ||||||||||||||||
alias_user_id | 所有者 | 多对一 | - 关系 = res.users | project | |||||||||||||||
alias_value | Alias email | 字符 | X | project | |||||||||||||||
allow_recurring_tasks | 循环任务 | 布尔型函数 | project | ||||||||||||||||
allow_subtasks | 子任务 | 布尔型函数 | project | ||||||||||||||||
allow_task_dependencies | Task Dependencies | 布尔型函数 | project | ||||||||||||||||
allow_timesheets | 工时单 | 布尔型函数 | hr_timesheet | ||||||||||||||||
analytic_account_balance | 余额 | 货币 | X | project | |||||||||||||||
analytic_account_id | 分析账户 | 多对一 | - 关系 = account.analy - 删除时= 设置为空 | hr_timesheet, project | |||||||||||||||
collaborator_count | # Collaborators | 整数 | X | project | |||||||||||||||
collaborator_ids | 合作者 | 一对多 | - 关系 = - 字段 = project_id | project | |||||||||||||||
color | 颜色索引 | 整数 | project | ||||||||||||||||
commercial_partner_id | 商业实体 | 多对一 | - 关系 = res.partner | X | project | ||||||||||||||
company_id | 公司 | 多对一 | - 关系 = res.company - 删除时= 限制 | X | project | ||||||||||||||
create_date | 创建时间 | 日期时间 | X | project | |||||||||||||||
create_uid | 创建人 | 多对一 | - 关系 = res.users - 删除时= 设置为空 | X | project | ||||||||||||||
currency_id | 币种 | 多对一 | - 关系 = res.currency | X | project | ||||||||||||||
date | 到期日期 | 日期 | X | project | |||||||||||||||
date_start | 开始日期 | 日期 | project | ||||||||||||||||
description | 说明 | html | project | ||||||||||||||||
display_name | 显示名称 | 字符 | X | project | |||||||||||||||
doc_count | 附件数量 | 整数 | X | project | |||||||||||||||
encode_uom_in_days | 编码计量单位天数 | 布尔型函数 | X | hr_timesheet | |||||||||||||||
favorite_user_ids | 成员 | 多对多 | - 关系 = res.users | project | |||||||||||||||
has_message | Has Message | 布尔型函数 | X | project | |||||||||||||||
has_planned_hours_tasks | Has Planned Hours Tasks | 布尔型函数 | X | hr_timesheet | |||||||||||||||
id | ID | 整数 | X | project | |||||||||||||||
is_favorite | Show Project on Dashboard | 布尔型函数 | project | ||||||||||||||||
is_internal_project | Is Internal Project | 布尔型函数 | X | hr_timesheet | |||||||||||||||
label_tasks | 用任务来 | 字符 | X | project | |||||||||||||||
last_update_color | Last Update Color | 整数 | X | project | |||||||||||||||
last_update_id | 最后更新 | 多对一 | - 关系 = - 删除时= 设置为空 | project | |||||||||||||||
last_update_status | Last Update Status | 选择项 | - 选取 = [ (on_track, On Track), (at_risk, At Risk), (off_track, Off Track), (on_hold, 在手), ] | X | project | ||||||||||||||
message_attachment_count | 附件数量 | 整数 | X | project | |||||||||||||||
message_follower_ids | 关注者 | 一对多 | - 关系 = mail.followers - 字段 = res_id | project | |||||||||||||||
message_has_error | 消息传递错误 | 布尔型函数 | X | project | |||||||||||||||
message_has_error_counter | 错误数 | 整数 | X | project | |||||||||||||||
message_has_sms_error | 短信发送错误 | 布尔型函数 | X | project | |||||||||||||||
message_ids | 消息 | 一对多 | - 关系 = mail.message - 字段 = res_id | project | |||||||||||||||
message_is_follower | 关注者 | 布尔型函数 | X | project | |||||||||||||||
message_main_attachment_id | 主要附件 | 多对一 | - 关系 = ir.attachment - 删除时= 设置为空 | X | project | ||||||||||||||
message_needaction | 需要行动 | 布尔型函数 | X | project | |||||||||||||||
message_needaction_counter | 动作个数 | 整数 | X | project | |||||||||||||||
message_partner_ids | 关注者(业务伙伴) | 多对多 | - 关系 = res.partner | X | project | ||||||||||||||
message_unread | 未读消息 | 布尔型函数 | X | project | |||||||||||||||
message_unread_counter | 未读消息数 | 整数 | X | project | |||||||||||||||
milestone_count | Milestone Count | 整数 | X | project | |||||||||||||||
milestone_ids | Milestone | 一对多 | - 关系 = - 字段 = project_id | project | |||||||||||||||
my_activity_date_deadline | 我的活动截止时间 | 日期 | X | project | |||||||||||||||
name | 名称 | 字符 | X | X | X | project | |||||||||||||
partner_email | 字符 | project | |||||||||||||||||
partner_id | 客户 | 多对一 | - 关系 = res.partner - 删除时= 设置为空 | project | |||||||||||||||
partner_phone | 电话 | 字符 | project | ||||||||||||||||
privacy_visibility | 可见性 | 选择项 | - 选取 = [ (followers, 邀请员工), (employees, 所有员工), (portal, Invited portal users and all employees), ] | X | project | ||||||||||||||
rating_active | 客户点评 | 布尔型函数 | project | ||||||||||||||||
rating_count | # Ratings | 整数 | X | project | |||||||||||||||
rating_ids | 点评 | 一对多 | - 关系 = ra - 字段 = parent_res_id | project | |||||||||||||||
rating_percentage_satisfaction | 评级满意度 | 整数 | X | project | |||||||||||||||
rating_request_deadline | 评级请求截止日期 | 日期时间 | X | project | |||||||||||||||
rating_status | 客户评价状态 | 选择项 | - 选取 = [ (stage, 在变更阶段时点评), (periodic, Periodic rating), ] | X | project | ||||||||||||||
rating_status_period | 点评频率 | 选择项 | - 选取 = [ (daily, 每天), (weekly, 每周), (bimonthly, 一个月两次), (monthly, 一个月一次), (quarterly, 季度), (yearly, 每年), ] | X | project | ||||||||||||||
remaining_hours | Remaining Invoiced Time | 浮点型 | X | hr_timesheet | |||||||||||||||
resource_calendar_id | 工时 | 多对一 | - 关系 = re | X | project | ||||||||||||||
sequence | 序号 | 整数 | project | ||||||||||||||||
sequence_state | State Check | 整数 | X | bi_project_template | |||||||||||||||
stage_id | 阶段 | 多对一 | - 关系 = - 删除时= 限制 | X | bi_project_template, project | ||||||||||||||
tag_ids | 标签 | 多对多 | - 关系 = | project | |||||||||||||||
task_count | 任务统计 | 整数 | X | project | |||||||||||||||
task_count_with_subtasks | Task Count With Subtasks | 整数 | X | project | |||||||||||||||
task_ids | 任务 | 一对多 | - 关系 = - 字段 = project_id | project | |||||||||||||||
tasks | 任务活动 | 一对多 | - 关系 = - 字段 = project_id | project | |||||||||||||||
timesheet_encode_uom_id | 工时表编码单元 | 多对一 | - 关系 = uom.uom | X | hr_timesheet | ||||||||||||||
timesheet_ids | Associated Timesheets | 一对多 | - 关系 = account.analy - 字段 = project_id | hr_timesheet | |||||||||||||||
total_timesheet_time | Total Timesheet Time | 整数 | X | hr_timesheet | |||||||||||||||
type_ids | 任务阶段 | 多对多 | - 关系 = | project | |||||||||||||||
update_ids | 更新 | 一对多 | - 关系 = - 字段 = project_id | project | |||||||||||||||
user_id | 项目管理员 | 多对一 | - 关系 = res.users - 删除时= 设置为空 | project | |||||||||||||||
website_message_ids | 网站消息 | 一对多 | - 关系 = mail.message - 字段 = res_id | project | |||||||||||||||
write_date | 最后更新时间 | 日期时间 | X | project | |||||||||||||||
write_uid | 最后更新人 | 多对一 | - 关系 = res.users - 删除时= 设置为空 | X | project |
数据字典
了解了数据结构,下面我们来具体演示一下,如何来创建数据集、设置指标、列、计算列及设置等 ,具体如下:
选择project_project
创建数据集的指标,比如创建一个count(1)的指标,如果你的图表是进行分组汇总的就特别有用,可以写具体的SQL表达式,如count、sum等,如下图:
创建项目数指标
保持创建项目指标
数据集的列默认就是数据库字段的名称,特别是表的字段一般都是字母,但我们可以设置标签替换该字段名称,比如设置中文,这样对于图表就具有可读性,同时也可以设置时间条件、可被过滤、维度等,如下图:
字段信息
设置列对应的标签
Superset数据集还提供了计算列的功能,我们可以对列进行加工,比如使用case when的SQL语句,计算列同样可以设置标签、时间条件、可被过滤、维度等,但计算列只有4中数据类型:STRING、NUMERIC、DATETIME、BOOLEAN,如下图:
计算列
计算列
设置计算列的SQL表达式
数据集的设置可以设置缓存时间、小时偏移、自适配过滤条件、模板参数、所有者等,如下图:
数据集的设置
数据集的设置
另外也可以使用旧数据源编辑器,如下图:
旧数据源编辑器
最后我们使用该数据集,创建一个图表,如下图:
列标签变中文
计算列
如果您喜欢这篇文章,请关注我,收藏、点赞、评论和转发,会让更多需要帮助的人看到这篇文章。举手之劳,善莫大焉!