Skip to content

第1章 搜索即分析

在数字化浪潮席卷全球的当下,数据已成为我们认知世界、洞悉市场动态及优化决策的重要基石。尤其是支撑企业组织业务运行的软件系统积累了大量的结构化数据,这些与企业的商业经营息息相关的数据,即时性好,准确性高。然而,由于软件系统及数据库的物理隔离往往形成了各种数据孤岛,企业要想让这些数据高效的发挥出价值,并不容易。借助智能数据分析与可视化技术,企业人员能够更直观地查询、理解和运用这些数据,从而有效的让这些数据产生价值。

本章介绍用于智能数据分析与可视化的工具---DataFocus,它是一款基于自然语言转数据库语言(Text2SQL)技术的搜索式数据分析软件。无需繁琐的操作,无需复杂的编程,便能轻松接入并处理数据。用户只需通过简单的自然语言查询,即可迅速探索数据价值,实现数据的即时分析与可视化呈现。

1.1 DataFocus简介

1.1.1 DataFocus概述

多年来,大数据分析行业虽然蓬勃发展,但仍然面临诸多挑战。数据准备繁琐、技能要求高以及业务理解难度大等问题严重阻碍了数据分析行业的发展。首先是在数据准备方面,数据分析师需要自行学习或依靠软件工程师来搭建Hadoop集群、创建数据仓库、购买 Informatics 等第三方数据仓库软件,或者学会使用Kettle等ETL工具。其次,在技能要求方面,数据分析师需要掌握数据库语言,熟练操作SQL语句,或掌握复杂的拖拽、配置操作技巧。最后,在业务理解方面,数据分析师必须深入了解业务类型,或者充当高效的需求经理,聆听、理解和实现业务人员交办的数据分析任务。

为了解决这些问题,DataFocus在设计之初就致力于降低大数据分析的门槛,让用户在注册、使用、生产过程中尽量摆脱对技术的过度依赖。DataFocus的核心功能是Focus Search 搜索引擎,它彻底改变了通过编写SQL语句进行数据分析的方式。用户可以通过简单的自然语言输入或关键词(例如“每年”、“同比”、“前10”、“周五”等),替代复杂的拖拽字段方法。DataFocus的自然语言处理引擎会自动解析这些查询请求,并自动生成相应的可视化图表。

尽管Focus Search极大地简化了数据分析的入门难度,但在实际应用中仍有一定的局限性。例如,系统可能需要用户以特定的方式输入查询语句,才能正确解析用户的意图,这限制了查询的灵活性,并增加了学习成本。

为了进一步提升用户体验,DataFocus推出了小慧。小慧具备了数据分析垂直领域的意图识别和推理能力,能够深入理解用户的查询意图,从语音识别到文本解析,为用户提供更加灵活、个性化的数据分析服务。这意味着用户无需严格遵循特定格式,系统也能准确地响应用户的查询需求。小慧不仅提高了查询的准确性和效率,还通过智能推荐和自动纠错机制,显著降低了用户的使用门槛。

DataFocus从未停止创新的步伐,其2024年初发布的FocusGPT具备了类似 GPT 的智能对话能力,进一步提升了对自然语言的理解,并支持多轮对话和分析引导。这意味着用户可以进行更自然的交互,系统能够更好地理解复杂的句子结构和语义,支持多条件、复合逻辑的查询。FocusGPT不仅可以提供即时的数据洞察,还能生成专业的分析建议和解释性报告,帮助用户在决策过程中更有信心。此外,FocusGPT还能够根据用户的使用习惯不断优化和进化,成为用户的数据分析伙伴。

在数据采集和预处理阶段,DataSpring提供了强有力的支持。作为数据采集和预处理服务,DataSpring 帮助用户快速从各种数据源收集数据,并进行必要的清洗和预处理工作。通过自动化的数据抓取和处理流程,DataSpring确保了数据的质量,为后续的分析工作提供了坚实的基础。用户可以轻松连接到不同的数据源,并通过简单的配置来管理数据流,大大简化了数据准备的过程。DataSpring还支持自动化测试和监控,确保数据的一致性和完整性。

这些产品和服务共同构成了一个全面的数据分析解决方案平台,覆盖了从数据采集、预处理、分析到可视化的整个流程。DataFocus不仅是一款数据分析工具,更是一个综合的数据分析解决方案平台,帮助企业在各个层面实现数据驱动决策,同时减少了对专业 IT 和数据科学团队的依赖。

1.1.2 DataFocus系统架构

DataFocus包含了数据仓库系统(Data Connectors & Data Warehouse)、数据搜索引擎(Search Engine)、可视化引擎(Visualization Engine)、安全控制模块(Security Control Module),以及一个语义解析引擎(Semantic Parsing Engine),更高级的版本还带有内存计算引擎(In-memory Calculation Engine)、机器学习模块(Machine Learning Module)和分布式集群管理模块(Distributed Cluster Manager),如图1-1。

图1-1 架构图

1.1.3 DataFocus账户创建

DataFocus Cloud无需本地安装,只需接入网络,通过访问域名即可在线注册和登录使用。

首先打开网址:https://www.datafocus.ai, 点击右上角“注册”,输入手机号并获取验证码,填写对应信息即可完成注册。注册完成后,点击右上角“登录”,弹出登陆页面,如图1-2所示。

图1-2 官网登陆页面

用户可以使用微信扫描二维码登录“DataFocus会员中心”,也可以使用账号密码登录,如图1-3所示。首次使用微信扫码登录后,需要填写个人信息并继续。

图1-3 账号密码登录

成功登录后会进入DataFocus会员中心首页。进入会员中心后,点击右上角的“新建”按钮,即可创建应用,如图1-4所示。

图1-4 DataFocus会员中心首页

创建成功后,自动进入该云应用空间,按指引即可开始分析,如图1-5。

图1-5 首次进入应用空间

用户也可以邀请其他人共同使用。邀请操作如下:

(1)在应用空间首页点击右上角的 “邀请用户”按钮即可邀请使用者。可以通过复制链接、分享二维码、填写邮箱地址三种方式邀请用户,如图1-6。

图1-6 邀请用户

(2)除此之外,DataFocus还支持批量邀请用户。点击左侧工具栏的“系统管理”模块,在组织架构页面点击“批量邀请用户”即可通过上传csv文件进行批量导入与邀请,文件具体格式可以下载查阅通讯录模板,按模板样例导入即可,如图1-7。

图1-7 批量邀请用户

(3)邮件形式分享的被邀请用户会在该邮箱收到验证邮件进行确认,点击确认链接即可登录系统进行使用。

1.1.4 DataFocus的功能模块

DataFocus功能强大,操作界面却非常清晰简洁。其产品理念就是用简单的交互方式,让用户开箱即用,降低用户的学习成本。进入应用后,界面如图1-8。

图1-8 产品界面

面板左侧从上至下有11个功能菜单,依次是“首页”、“FocusGPT”、“搜索”、“历史问答”、“数据看板”、“数据表管理”、“定时发送”、“资源管理”、“日志管理”、“数据治理”、“系统管理”。各功能模块的介绍见表1-1。

表1-1 DataFocus功能模块介绍

FocusGPT通过FocusGPT可以实现人机自然语言交互,快速生成数据结果和可视化图表。
搜索通过搜索框输入搜索问题进行数据分析。搜索结果以表格或图表形式显示在页面中间
历史问答保存历史搜索结果,可实时更新数据
数据看板将历史问答自由组合成个性化的数据看板(数据可视化大屏),直观呈现数据变化
数据表管理支持导入本地文件或直连/导入数据源数据,支持对数据表进行管理
定时发送通过增加定时任务,按时发送问答/看板到邮箱、企业微信,飞书,钉钉群等
资源管理支持创建和查看所有资源,包括项目、数据看板、历史问答、数据表等
日志管理查看操作日志,支持系统日志导出等
数据治理数据仓库界面,管理从其它数据库中导入的数据表资源
系统管理支持用户管理、权限管理、全局配置、搜索配置、定时调度、自定义公式管理、接口鉴权以及设备管理等(系统管理功能只显示在拥有系统管理员角色的用户的页面上)

选择数据表,然后双击左侧数据列,或者在搜索框输入对应的关键词语句,就可以进行数据分析了,如图1-9。

图1-9 搜索式数据分析

俗话说:“巧妇难为无米之炊。”出色的数据分析,往往依赖于完整、精确、可靠的原始数据。下一节将详细介绍如何用DataFocus连接用户的多种数据源:加载本地数据,或者从业务系统数据库中抽取数据。

1.2 数据的导入与导出

DataFocus擅长处理结构化数据,如存储于各类关系型数据库中的数据表。其分析是通过执行SQL计算进行的,因此其支持的数据格式与大多数数据库大致相同。数据导入时系统会自动识别数据字段(列)类型,通常分为属性列和数值列两大类,属性列又可以细分为字符串、时间戳等数据类型。不同的数据类型支持不同的计算操作,如时间戳类型的数据支持诸如“按月统计”、“每年”等丰富的与时间相关的聚合计算方式,详情可参考4.2.2节介绍。错误的数据类型会降低系统使用体验,用户在数据导入时应尽可能确保数据类型识别正确。

1.2.1 从本地导入表

DataFocus目前支持四种数据表连接方式,即从本地导入、从数据源导入、从API导入和从HTTP接入数据表。通过左侧“数据表管理”功能界面点击“导入表”,之后可以根据数据表的具体位置选择合适的连接方式。

点击“从本地导入表”,可导入CSV、XLS、XLSX以及JSON等本地数据文件,单次导入的数据量需要小于50兆字节,如图1-10。当大于50兆字节时,可以选择多次导入。选中后点击上传,并确认行列属性是否正确。若行列属性不正确,如某些数值列被识别成string格式,则会导致这些数值列无法进行“求和、平均值、最大值”等操作。同时,某些字符串列,如编号、产品号等,被识别成数值列,也会导致出现对这些列进行聚合运算等无意义的结果。

图1-10 本地导入

当选择的数据表文件包含多个Sheet时,系统会提供所有表格供使用者挑选合适的Sheet同时导入,每个表格的数据列的相关配置和单表的配置相同,如图1-11。

图1-11 本地数据表多个表格导入界面

1.2.2 从数据源导入表

点击左侧“数据管理”模块,然后点击左上方“导入表”按钮,点击“从数据源导入表”,跳转到选择数据源界面,此时可以选择已添加的数据源,或者新增数据源,如图1-12。

图1-12 选择数据源

选择数据源之后,点击下一步,选择需要从该数据源导入的表和数据列,导入方式可以选择“直连”和“导入”,如图1-13。需要注意的是,导入操作会将数据导入并存储到DataFocus自带的数据仓库;直连操作仅读取元数据,不会将数据存储到DataFocus中,分析时系统会临时链接数据源进行查询计算。若是操作大数据集进行分析,建议使用导入数据,DataFocus数据仓库性能可保障分析顺畅;直连数据分析则依靠对方设备的数据库性能,仅在数据量不大且即时性要求较高时建议使用。

图1-13选择导入表

选择导入表和导入方式后,点击“确定”按钮,直连数据即可配置完成,返回列表可查看导入状态。直连数据支持实时更新,数据库中数据有变化时,DataFocus中直连的这些表,以及依赖这些表制作的中间表都能实时更新。

导入数据支持定时更新,如果选择的数据表存在“导入”方式则会进入第三步,“配置导入类型的表”,可以配置表过滤条件以及配置数据表的简单重复或者明细频率的定时导入,点击“开始导入”按钮,返回列表可查看导入状态。

图1-14 配置表过滤条件

图1-15 配置定时导入时间

新增数据源选项中目前支持PostgreSQL,MySQL,Oracle,GaussDB 100,SQL Server,IBM DB2等20余种类型的数据库,这些数据源涵盖了主流的关系型数据库和常用的分析型数据库,能够满足不同场景下的数据导入需求。在新增数据源的过程中,用户需要配置以下关键信息:选择数据源类型,并输入数据源名以便识别。接着,填写服务器地址、端口、数据库名,以及可选的Schema(不填则使用默认)。此外,用户还需提供JDBC参数(如连接属性)、用户名及对应密码。为确保配置正确,建议使用测试连接功能进行验证。一旦信息核实无误,点击确定即可完成数据源添加,如图1-16。

图1-16 新增数据源

1.2.3 从API导入表

点击左侧“数据管理”模块,然后点击左上方“导入表”按钮,点击“从API导入表”,跳转到选择数据源界面,此时可以选择已添加的API数据源,如图1-17。

图1-17 从API导入表

选择数据源之后,点击下一步,选择需要从该数据源导入的表和数据列,如图1-18。

图1-18 选择API数据表

1.2.4 从HTTP导入表

点击左侧“数据管理”模块,然后点击左上方“导入表”按钮,点击“从HTTP导入表”,进入HTTP配置界面,如图1-19。用户可以配置基础的请求方式、设置URL、配置Params、Body请求体、Headers请求头、Cookies这些基础功能配置。认证方式Auth目前支持两种认证方式Basic Auth和Digest Auth。基础配置项中的键值对可以使用JavaScript变量动态赋值,只需要使用双中括号包括需要使用的变量,如,即可在基础配置中动态赋值变量。

图1-19 配置HTTP接口

HTTP接口配置完成,下一步即可配置导入的列与数据,如图1-20。

图1-20 配置列与数据

1.2.5 导出数据

若需要将数据导出本地,可在搜索界面,将查询结果导出为CSV文件或PDF文件,如图1-21。

图1-21 导出数据

1.3 多表关联

在实际业务中,我们常常需要从多个不同的表里调取字段进行数据分析,所以跨表查询是非常重要的功能。

跨表查询的前提是所需表之间有相应的关联关系。DataFocus可以在数据表管理模块的表详情页中进行关联关系的建立,我们在数据表的关联关系页面,点击增加关联即可将当前表作为主表开始进行关联关系的配置。用户需要选择关联的维度表,并选择连接类型(内连接、左连接、右连接、全关联),最后确认两表之间的关联列(可多个)即可,如果有必要,也可以添加连接筛选条件进行筛选关联。当然,你可以对某张表创建多个关联关系,只要符合关联关系不闭环的条件即可,如图1-22所示。

图1-22 关联关系配置页

其中四种关联关系,将以Student和Course示例数据表进行简单的讲解,如表1-2所示。内连接是最常见的连接类型,它返回两个表中满足连接条件的所有记录。换句话说,只有那些在两个表中都有匹配值的记录才会被返回。左连接返回左表中的所有记录,以及右表中与左表匹配的记录。如果左表中的某行在右表中没有匹配行,则结果集中该行右表的部分会包含空值(NULL),如表1-3所示。右连接与左连接相反,它返回右表中的所有记录,以及左表中与右表匹配的记录。如果右表中的某行在左表中没有匹配行,则结果集中该行左表的部分会包含空值(NULL)。全连接返回左表和右表中的所有记录,以及它们之间匹配的记录。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值(NULL),如表1-4所示。

表1-2 连接类型示例数据表

StudentCourse
IDNameIDCname
1张三1足球
2李四2音乐
3王二4美术

表1-3 内连接和左关联

内连接左连接
IDNameIDCnameIDNameIDCname
1张三1足球1张三1足球
2李四2音乐2李四2音乐
3王二NULLNULL

表1-4 右连接和全关联

右连接全关联
IDNameIDCnameIDNameIDCname
1张三1足球1张三1足球
2李四2音乐2李四2音乐
NULLNULL4美术3王二NULLNULL
NULLNULL4美术

除此之外,系统还支持动态关联,适配更灵活的业务场景。动态关联是一种智能化的数据连接方式,通过动态适配分析需求调整关联规则,而非依赖固定的静态关联规则。其核心流程分为两步:预聚合处理以及动态维度匹配。如表1-5,接下来将使用这两张示例表对比展示动态关联和非动态关联的区别。

表1-5 动态关联示例表

sales_dataorder_data
IDProvinceCitySalesIDProvinceCityAmount
1上海上海1001上海上海50
1上海上海2002上海上海150
4浙江杭州3004浙江杭州200
5浙江衢州3006苏州江苏100

我们将两张示例表导入系统,进行动态关联关系的添加。和普通关联一样动态关联也需要选择源表和维度表,以及配置关联字段,关联字段设置为ID、Province、City,这两步是表间逻辑关系的基础,无论普通关联还是动态关联,都需要通过它们建立数据连接。然后单击“开启动态关联”按钮,如图1-23。

图1-23 开启动态关联

关联关系创建完毕并生效后,会在数据表的关联关系页面中显示相应的视图,如图1-24所示。将鼠标移至两表之间的连线上,可以激活关联关系的“详情”按钮,查看当前关联关系的详细内容。

图1-24 关联关系视图

在成功根据分析需求构建多表间恰当的关联关系后,用户就能够在搜索界面或中间表页面中,利用这些已关联的表作为数据源,执行多表联合查询操作。此时,查询“Province Sales Amount”。查询结果为“上海 300 200、浙江 600 200”两条数据。同时我们可以通过右侧工具栏的“查询SQL语句”按钮来帮助理解动态关联表的查询过程,如图1-25。

图1-25 动态关联查询

在处理该动态关联的查询时,各表先独立按查询维度聚合,即《sales_data》 按照Province Sales聚合,而《order_data》 按照Province Amount聚合,如表1-6。在聚合过程中,会忽略ID和City不同,《sales_data》聚合后得到两条数据,《order_data》聚合后得到三条数据。

表1-6 聚合过程示例

sales_datasales_data
IDProvinceCitySalesProvinceSales
1上海上海100聚合→上海300
1上海上海200
4浙江杭州300聚合→浙江600
5浙江衢州300
order_dataorder_data
IDProvinceCityAmountProvinceAmount
1上海上海50聚合→上海200
2上海上海150
4浙江杭州200聚合→浙江200
6江苏苏州100聚合→江苏100

然后将聚合后的数据进行关联,由于查询的是“Province Sales Amount”,因此关联时舍弃关联字段ID和City,仅按照关联字段Province进行关联。 由于“江苏 100”无匹配的数据被丢弃,最后得到了“上海 300 200、浙江 600 200”两条数据。由此可见,该动态关联示例在数据查询时,自动仅按Province聚合和关联,ID和City被丢弃,实现跨城市/ID的省级统计。

此时若关闭动态关联,其余保持不变,得到的结果是:查询时严格按照所有关联字段(如 ID+City+Province)进行行级精确匹配,任一关联字段未匹配的数据都将直接丢弃。匹配后的结果再按查询要求进行聚合(如Province Sales和Province Amount),如图1-26。它的结果数据为“上海 300 100、浙江 300 200”,与动态关联结果完全不同。

图1-26 非动态关联查询

总而言之,动态关联查询时各表先独立按查询维度聚合(如Province Sales和Province Amount),再根据查询需求自动筛选关联字段进行关联(如 province),确保维度数据完整性。动态关联与普通关联的选择取决于业务需求和数据特性。若分析目标需要精确追踪具体业务实体(如订单、用户),且关联字段(如ID、编码)在跨表中完全一致,应优先使用普通关联,通过严格的行级匹配确保数据准确性,典型场景包括订单详情对账或用户行为追踪。反之,若侧重宏观维度统计(如地区销售额对比),或关联字段可能存在不一致(如ID错位但地区等维度可信),则需选择动态关联,其通过先聚合维度指标再关联的方式,规避实体匹配问题,尤其适合海量数据下的性能优化。简单来说,实体级分析用普通关联,维度级统计用动态关联,当数据量大或字段可信度存疑时,动态关联在确保结果完整性和执行效率上更具优势。

1.4 数据集

数据集允许用户创建和管理若干个有关联或无关联的数据表,这些数据表可以来自不同的数据源,如本地导入、外部数据源导入、API导入等,通过数据集功能,用户可以轻松地将特定主题的数据表整合在一起,形成一个统一的数据视图。数据集的意义在于,它为用户提供了一个按主题集中、有序管理数据的环境。在这个环境中,用户可以方便地查看、编辑、分析数据,从而更高效地利用数据资源。

在数据表模块的数据集页签,点击“创建数据集”,如图1-27。

图1-27创建数据集

数据集创建后即可导入数据表,点击左上角的“导入数据表”按钮,可选择已导入系统的数据表加入到数据集中,如图1-28。

图1-28 数据集导入数据表

导入数据集的数据表可以是若干个相关联或无关联的数据表,若是已创建关联关系的数据表,将会高亮显示,例如导入关联数据表《教材_商品信息》和《教材_订单信息》,如图1-29。

图1-29 选择关联数据表

在数据集中,用户可以定义数据表之间的关联关系。注意,若数据表已存在关联关系,则数据集会继承数据表的关联关系,如图1-30。

图1-30 继承数据表的关联关系

用户也可以在数据集中独立管理导入表的关联关系,点击“添加关联”按钮,即可为数据集中的数据表增加关联关系,源表和维度表的选择仅限于数据集中的数据表,如图1-31。

图1-31 数据集添加关联关系

若干个数据表一旦被添加到同一个数据集中,用户就可以将它们视为一个整体来进行搜索和分析。在搜索界面,点击“选择数据”按钮,然后点击“选择数据集”,选中创建的“数媒”分析数据集。选中数据集后,该数据集中的所有数据表将会显示在左侧,如图1-32。这种方式极大地简化了数据处理的流程,使得用户无需在来回切换选择数据,即可获取到所需的数据。

图1-32 选择数据集

但是请注意,虽然数据集允许导入不存在关联关系的数据表,但是无关联关系的数据表之间不能进行联合分析,如图1-33。

图1-33 无关联关系数据表不能联合分析

如果此时用户发现需要重新维护数据集的关联关系,无需返回数据集页面,在搜索页面就可以查看、修改及添加数据集的关联关系,如图1-34。

图1-34 搜索界面添加关联关系

1.5 关键词搜索

打开DataFocus系统,进入搜索界面,点击左上方“选择数据表”按钮,进行数据选择,一般新导入的数据表会显示在靠前的位置。选择需要分析的数据表后即可进行分析。

双击左侧列名( 数据表字段)即可进行搜索分析,根据业务需要选择对应的列名即可。不需要分析的列名可点击搜索框的“×”按钮,删除该列。此方法是最为简便的搜索方法,双击搜索即分析,尤其是一些列名规范的数据表,如“产品”“销售金额”等明确的数据表,则能快速进行分析,双击两个列名即可出现每个产品的销售金额情况。这里需要注意,DataFocus系统对数值型列名数据,不加限定的条件下,默认使用“总和”的聚合方式展示。

除此之外,DataFocus内置了关键词帮助用户进行搜索使用,使用关键词定义搜索可以缩小搜索范围,提升效率。并且在输入过程中DataFocus会主动的出现提示,让搜索变得更加智能化。

下面基于数据表《教材_电商销售数据》介绍使用几类常见关键词进行搜索式数据分析的操作过程。更多关键词使用说明可以进入DataFocus帮助栏目中用户手册的关键词进行查询。

1.5.1 做对比 Compare

vs(不区分大小写)

时间日期对比:

---例:2019 VS 2020 VS 2021 销售额

---例:去年 vs 今年 订单金额,利润金额,运输成本

图1-35 时间日期对比

具体属性(列中值)对比:

---例:华南 vs 华东 销售额

和 all 对比:

---例:省份 Vs all 销售额

图1-36 列中值对比

1.5.2 看变化 Change

环比增长量/环比增长率:

yy(的聚合) 的日/周/月/季度/年 增长量

---例:销售额 的季度增长量

同比增长量/同比增长率:

yy(的聚合)的日/周/月/季度/年 增长量 同比

---例:销售额 的总和 的月增长量 同比

图1-37同环比关键词

定基增长量/定基增长率:

相对于 A 年/A 年 B 月/A 年 B 月 C 日 yy(的聚合)的日/周/月/季度/年增长量

---例:相对于 2019 年 6 月利润金额的总和 的月 增长量

图1-38定基增长关键词

1.5.3 问排名 Sort

单个/分类排位:

xx【属性列】 yy【数值列】(的聚合)的排名/竞争排名/密集排名

---例:产品类型 利润金额 的总和 的排名

分类排位在单个排位的基础上,增加按“ss【属性列】统计”即可实现分类排位,如图1-39。

图1-39分类排位关键词

单个/分类排名:

排名前/后 a(number) 的 yy(的聚合) xx【属性列】

---例:排名前 10 的 销售额 的总和 产品名称

排名/倒数第 a(number)到 b(number)的 yy (的聚合) xx【属性列】

---例:排名第 3 到 5 的 销售额 的总和 产品名称

分类排名在单个排名的基础上,增加“按 ss【属性列】统计”即可实现分类排名,如图1-40。

图1-40分类排名关键词

1.5.4 抓典型 Typical

开头是/开头不是/结尾是/结尾不是/包含/不包含

---例:开头是 “小米”,“华为”的产品名称 销售金额

---例:产品名称 包含“iphone”,“苹果” 销售金额

图1-41抓典型关键词

1.5.5 圈范围 Range

分组统计:

按 yy【数值列】从 a 到 b 分 n 组间隔为 m 统计的

---例:按 订单金额 从 50 到 500 分 7 组步长为 100 统计的

其中“从a到b”、“分n组”、“间隔为m”可按实际查询需求省略,例如无分组要求,可输入“按销售金额分组统计”,系统默认分5组,如图1-42。

图1-42分组统计关键词

筛选统计:

xx【属性列】为空/不为空

---例:客户名称 为空 销售金额

yy【数值列】大于/小于/等于/大于等于/小于等于

---例:销售额 大于 1000

图1-43筛选统计关键词

1.5.6 定数值 Numbers

属性列:

X 的数量/去重后的数量

---例:订单编号 的数量

图1-44属性列定数值关键词

数值列:

yy 的总和/最大值/最小值/平均值/方差/标准差

---例:销售金额 的总和

yy 的分布

---例:利润 的分布

图1-45数值列定数值关键词

求占比:

xx【属性列】 的 yy(的聚合) 的占比

---例:区域 的 订单金额 的总和 的占比

图1-46占比关键词

1.5.7 时间窗 Time&Period

过去时间:

过去 n 分钟/小时 上一分钟/小时 n分钟/小时前

---例:过去 30 分钟 销售额

未来时间:

下一分钟/小时 未来 n分钟/小时

---例:下一分钟 订单金额

分段时间:

每分钟/小时

---例:每分钟 订单数量

图1-47分段时间关键词

1.5.8 选日期 Date

相对日期的过去/未来:

在“yyyy/mm/dd hh:mm”之前/之后

---例:在"2021/12/08 17:09:41"之前 客户名称

按实际查询需求,“yyyy/mm/dd hh:mm”,可省略为 yyyy、“yyyy/mm”、“yyyy/mm/dd”,如图1-48。

图1-48相对日期的过去关键词

当前日期的过去/未来:

本周/月/季度/年至今

---例:本周至今 销售金额

昨天/前天/大前天/去年/上周 n/上周末/上周/上月/上季度/

明天/下周 n/下周末/下周/下月/下个季度/明年

---例:昨天 销售金额

过去/未来 n 天/周/月/季度/年

---例:过去 5 天 订单数量

图1-49当前日期的过去关键词

分段日期:

yyyy 年 mm 月 dd 日

---例:2020 年 8 月 30 日 销售金额

按天/周日期/周/月统计

---例:按天统计 订单金额

图1-50分段日期关键词

1.6 公式生成

公式模块是数据分析系统的核心模块之一,用于进行字段的数据处理,DataFocus包含了大部分类似Excel的函数,可以涵盖工作中大部分的使用场景。在搜索时可以通过增加公式丰富搜索结果。具体操作如下:

(1)在搜索页面点击左下角“增加公式”按钮会弹出一个公式填写界面;

(2)在空白栏中输入要用的公式。本模块还设计了公式辅助功能,免除用户去记忆繁多的公式函数,仅需要点出辅助框,按分类索引引用即可,如图1-51。鼠标悬停在公式上,下方会出现对于该公式的解释说明以及样例;

(3)编写好的公式可以自己命名,点击公式名,对公式名字进行编辑(不能与关键词同名);

(4)若公式计算的最终结果是数值,则在公式输入框下方的“高级设置”中可以修改该公式的聚合方式及列类型;

(5)公式输入正确后点击确定,该公式便会添加在数据表的最下方;

(6)双击该公式即可将公式加入到搜索框内,公式计算结果会显示在结果中。

图1-51 添加公式

公式模块也配备了和搜索相似的智能输入提示功能,在书写的同时,补全函数并提示可作为参数的数据列,提高公式书写的准确度和效率。

1.6.1 聚合函数

聚合函数包括了8种基本聚合方式和累积、分组、范围等条件聚合函数。8种基本聚合方式分别为平均值(average)、计数(count)、最大值(max)、最小值(min)、标准差(stddev)、总和(sum)、方差(variance)、去重计数(unique_count)。同时可以引申出按条件聚合的公式,分别为按条件求平均值(average_if)、按条件计数(count_if)、按条件求最大值(max_if)、按条件求最小值(min_if)、按条件求标准差(stddev_if)、按条件求总和(sum_if)、按条件求方差(variance_if)、按条件求去重计数(unique_count_if)。

属性列在需要聚合的情况下,仅支持计数(count)、去重计数(unique_count)两种聚合方式。系统默认数值列的聚合方式为总和,属性列无聚合方式。用户可以在搜索的同时在搜索框内直接限定数据列的聚合方式,也可以在数据管理的对应数据表详情中修改默认聚合方式。

在公式计算时,遇到需要修改聚合方式的情况,就可以使用聚合函数直接进行修改,比如数据表中有销售金额、销售数量、进货价格三个数值列(默认聚合方式均为总和),如果想查看单个产品实际销售售价(即“销售金额/销售数量”)和进货价格的差值,即单品的每件销售利润,这里就需要对“销售额/销售数量”进行聚合修改(如图1-52),否则会出现错误(如图1-53)。

图1-52 对计算结果进行聚合修改

图1-53 错误聚合示例

所以用户在进行数据分析时,尤其是公式辅助分析时,要关注数据的聚合方式,确保数据准确性,并且善用聚合函数来对聚合方式进行灵活的转化。

1.6.2 分析函数

数据分析中有时会遇到一类指标是需要进行滚动统计的,比如说累计求和、分组求和、移动平均值等。分析函数就可以实现这一类的需求。如图1-54所示,可以通过“group_sum”函数计算销售金额按照不同的产品子类别、不同的目的省份的和。但要注意的是,因为得出的结果是非聚合的,不能直接绘制柱状图、环图等图形,需要先保存为中间表再进行绘图。

图1-54 分析函数分组求和

1.6.3 字符串函数

字符串函数用于对字符进行连接、剪切、匹配等操作,可以将几个零散的字符列拼接成完整易用的一个字符列,或者是从一个长串字符列中截取我们需要的部分。例如将“产品类别”和“产品子类别”使用concat命令拼接成“产品类别全称”,如图1-55所示。

图1-55 字符串拼接

1.6.4 数字函数

数字函数是公式中最基础也是使用最广泛的一类,用于对数值进行计算,如加减乘除、三角运算、多次乘方、绝对值、取整等等,还有一些复杂运算,如数学和三角函数,以及部分统计函数,满足各种数值计算需求。

这一部分在做数据分析经常用到,比如计算各种财务数据或者运营指标等等。图1-56中使用一个简单的例子来进行演示,已知每种货品的销售量、售价和进货价格,求该类货品的毛利。

图1-56 用数字函数计算数值

1.6.5 类型转换函数

类型转换函数用于对数据类型进行转换,系统支持转化为5种数据类型,分别是布尔型、日期型、浮点型、整数型和字符型。

在业务中,用户可以将数值型的数据列转化为字符型(to_string),然后作为属性列进行搜索;也可以将转化后的数据列作为参数在公式中嵌套使用。例如将指定字段转化为布尔型,如图1-57。

图1-57 布尔型转换

类型转换函数还有各种应用场景,都可以根据需求灵活使用,也支持结合其他函数进行嵌套使用。

1.6.6 逻辑函数

逻辑函数用于进行逻辑判定和逻辑运算。独立使用比较少见,多用于和其他函数结合,在判断条件中调用。

其中的“if…then…else”函数常用于进行特殊分组分群,例如将销售金额按一定的条件区分,就是很常见的应用场景,如图1-58。

图1-58 if公式划分是否为大额订单

1.6.7 混合函数

混合函数是用于对数值比较进行判断的函数,主要分两种:一种是判断两个值的关系,如“<”“>=”“!=”等,根据判断结果返回true或false;第二种是判断两个值的大小,返回较大/较小的一个值。该函数常和其他函数一起使用,作为参数被调用,或者单独作为比较返回较大/较小值使用。

1.6.8 时间日期函数

时间日期函数是针对时间列的函数,可以对时间列进行各种统计、计算。比如:你可以计算某一时间日期是一周内的星期几,是不是周末,是几月、第几个季度,等等;也可以计算一整列中的每一天距离某一个日期的天数,这在计算用户活跃度中的最近一次上线间隔天数这种指标时非常方便;也可以计算该日期的年份、月份、季度数目。如图1-59所示,计算签收至发货之间的运输天数。

图1-59 计算日期差

1.6.9 公式嵌套

在实际业务场景中,常常遇到使用某个之前创建过的公式的情况,如果再输入一遍会导致公式逻辑比较复杂,这里就需要用到公式嵌套功能了。顾名思义,公式嵌套就是在当前创建的公式中使用之前创建过的公式。

DataFocus系统除了极为稀少的一些为了避免数据错误的场景,比如对含有计数(count)聚合或去重计数(unique_count)聚合的公式进行再聚合的场景,其他正常的公式嵌套都是可以使用的,公式中的智能提示也会将之前的公式纳入补全选择。

上文其实我们已经使用过了公式嵌套,在类型转化函数的举例中,嵌套了逻辑函数举例的公式,如图1-60。

图1-60 公式嵌套

1.7 指标公式

指标公式是指用上一节所讲的公式生成方法创建的,依附于数据表或数据集的计算规则,它允许用户根据已有的数据列生成新的虚拟数据列(计算列)。在数据表详情页右上角点击‘添加指标公式列’即可创建指标公式。这些指标公式列可使用与普通公式相同的函数进行计算,如图1-61。

图1-61 数据表指标公式列

指标公式创建后,会作为数据表的一个固定列存在,这意味着在后续的数据分析中,可以直接引用和使用这个计算列,如图1-62。

图1-62 指标公式列

要在数据集中创建指标公式列,请进入数据集详情页并点击‘指标公式’页签,这一过程允许用户基于数据集中的一个或多个数据表的数据列来定义新的计算列,如图1-63。创建成功的指标公式将作为数据集的一部分,供后续的数据分析和报表使用。

图1-63 数据集指标公式

无论是通过数据表还是数据集创建的指标公式,用户都可以在数据表模块的‘指标公式’页签中进行统一管理和查看。该页签将展示所有指标公式的详细信息,包括指标名称、数据类型、描述、来源类型、所属资源、创建者及更新时间等,如图1-64。

图1-64 指标公式管理

1.8 搜索即分析案例——用户画像分析

用户画像就是根据用户特征、业务场景和用户行为等信息,构建一个标签化的用户模型。 简而言之,用户画像就是将典型用户信息标签化。电商行业的用户画像分析包含性别分布、年龄分布、地域分布、活跃时间等,通过用户购买品类分布、付费情况和购买力定义用户分类。

接下来将以《教材_订单信息》、《教材_用户基本信息》、《教材_城市级别》作为数据源进行用户画像分析,展示多表关联、关键词搜索以及公式运用等功能。

首先导入示例数据表,并创建关联关系。《教材_订单信息》与《教材_用户基本信息》左关联,关联字段为“用户ID”。《教材_用户基本信息》与《教材_城市级别》左关联,关联字段为“城市名称”,如图1-65及图1-66。

图1-65 订单和用户关联

图1-66 用户和城市关联

在搜索界面选择这三张示例表即可开始分析。

1. 性别分布分析

性别分布分析旨在了解用户群体中不同性别的比例分布,帮助企业更好地理解目标用户群体的性别特征。运用定数值中的“去重后的数量”关键词,输入“用户ID去重后的数量 性别”,切换为环图,如图1-67。女性用户占比79.12%,男性用户20.88%。需警惕过度依赖单一性别用户的风险,建议拓展男性消费场景(如3C数码、运动户外等),或者针对男性用户推出专属活动(如科技新品首发、体育联名款)。

图1-67 性别分布分析

2. 城市分级分布分析

城市分级分布分析用于揭示用户所在城市的级别分布情况,有助于企业针对不同级别的城市制定差异化的市场策略。与性别分析类似,输入“用户ID去重后的数量 城市分级”,切换为环图,如图1-68。四线城市用户占比70.31%,新一线城市仅2.8%。平台主要渗透下沉市场,新一线城市用户不足,可能因品牌认知度低或配送覆盖不足。在四线城市强化社区团购和线下体验店,提升用户粘性;针对新一线城市增加品牌广告投放,优化仓储物流网络。

图1-68 城市分级分布分析

3. 年龄分布分析

年龄分布分析旨在了解用户群体的年龄结构。通过将年龄进行分组统计,并按组别展示用户数量,可以直观地看出用户在不同年龄段中的分布情况,帮助企业更好地把握目标用户群体的年龄特征,为产品设计和市场策略提供参考。运用分组统计关键词,输入“用户ID去重后的数量 按年龄分10组步长为5统计的”,切换为柱状图,如图1-69。平台覆盖全年龄层,中老年用户占比稍多,为了进一步提升这一部分用户体验,建议优化APP字体/功能适配中老年用户,以及开发健康类商品。

图1-69 年龄分布分析

4. 年龄与付费能力分析

年龄与付费能力分析旨在探究用户年龄与消费能力之间的相关关系。通过将数值列“年龄”转换为字符串以避免自动聚合,添加公式“年龄转换”,将年龄通过转化函数“to_string”处理为字符串,如图1-70。

图1-70 年龄转化

计算不同年龄段的平均订单金额,可以直观地展示用户在不同年龄段中的消费能力差异,帮助企业针对不同年龄段的用户制定差异化的营销策略。在搜索框输入“订单金额的平均值 年龄转换”,数值表界面点击年龄列,即可按年龄升序排列,如图1-71。

图1-71 年龄升序

然后再切换成折线图,如图1-72。全年龄段平均订单金额495.1元,最大值为637.92元。为了提升用户的付费能力,建议针对中老年用户推荐高客单价商品(如保健品套装、家电),对年轻用户推出分期付款或学生优惠计划。

图1-72 年龄与付费能力分析

5. 用户购买力分析

用户购买力分析旨在深入了解用户的消费能力和购买频次。通过计算用户的购买频次,并根据购买频次对用户进行分级,可以清晰地划分出不同购买力水平的用户群体。首先用定数值“count”关键词计算用户的购买频次,添加公式“购买频次”,输入“count(用户ID)”,如图1-73。

图1-73 购买频次

然后运用公式嵌套和逻辑公式,添加公式“用户分级”,输入“if(购买频次)>10then"重要价值用户" elseif (购买频次)>5and(购买频次)<=10 then"潜力用户" elseif(购买频次)<=5and(购买频次)>=2then"一般客户" else"新客户"”,按购买频次对用户进行分级,如图1-74。

图1-74 用户分级

进一步通过散点图展示购买频次、订单金额和用户分级之间的关系,有助于企业识别高价值用户,优化营销策略,提升用户留存和转化率。在搜索框输入“用户分级 购买频次 订单金额 用户ID”,切换成散点图,点击图轴配置按钮,设置X轴为购买频次,Y轴为订单金额的总和,图例为用户分级,如图1-75。潜力用户和高价值用户占比大于新客户和一般客户,对高价值用户提供专属客服和生日礼包,对潜力用户推送复购优惠券,进一步提升他们的复购率。

图1-75 用户购买力分析

6. 用户活跃分析

用户活跃分析旨在了解用户在不同时间段内的活跃情况。通过统计每小时的订单数量,可以直观地展示用户在不同时间段内的活跃程度,帮助企业识别用户活跃的高峰期和低谷期,从而优化产品功能和运营策略,提升用户体验和活跃度。运用“每小时”关键词,在搜索框输入“订单时间 每小时订单ID去重后的数量”,切换为面积图,如图1-76。0点和17点为订单高峰,凌晨活跃度异常。17点高峰反映下班后的休闲购物行为,0点高峰可能因限时折扣活动(如“零点秒杀”)。建议将后续促销活动集中在17-20点及23-0点时段。并且针对非工作时间活跃度高,需优化客服排班和服务器负载,或增加夜间智能客服机器人,减少用户等待时间。

图1-76 用户活跃分析

本章小结

本章概述了DataFocus搜索式分析的核心功能、系统架构,以及从注册登录到创建应用、执行数据分析的完整基础流程。DataFocus Cloud版在保持其强大功能的同时,极大地简化了用户操作步骤,使用户能够更迅速地访问数据并完成分析任务。此外,本章还详细介绍了DataFocus搜索分析的基本技巧,涵盖了数据导入与导出、多表关联、高效关键词搜索以及多种公式的灵活运用,旨在帮助用户更深入地掌握DataFocus的实用技能。

课后习题

1.登录https://www.datafocus.ai/,完成注册并试用DataFocus分析系统。

2.为你的DataFocus系统上传数据《教材_电商销售数据》。

3.针对上述数据,找出各城市装运成本前3的产品名称。

4.针对上述数据,找出细分市场中销量最高的产品。