通过 FineBI 实现 MatrixOne 的可视化报表

概述

FineBI 是新一代大数据分析工具,它有助于企业的业务人员深入了解和充分利用他们的数据。在 FineBI 中,用户可以轻松地制作多样化的数据可视化信息,自由分析和探索数据。FineBI 具有多种数据连接功能,可用于创建各种复杂的报表,构建数据决策分析系统,广泛应用于公司经营管理、生产管理、财务智能核算、销售运营等领域。

MatrixOne 支持连接到数据可视化工具 FineBI。本文将指导您如何通过 FineBI 连接到单机版 MatrixOne,并创建各种可视化数据报表,将它们组装成仪表板,以便进行数据分析和探索。

前期准备

Note

本篇文档所展示的操作示例中使用的 FineBI 版本为 Linux 6.0 版本,你可以选择安装包 Linux_unix_FineBI6_0-CN.sh。

通过 FineBI 连接 MatrixOne 服务

  1. 登录 FineBI 后,选择管理系统 > 数据连接 > 数据连接管理 > 新建数据连接,如下图所示,选择 MySQL:

image-20230808174909411

  1. 填写 MatrixOne 连接配置,包括数据库名称、主机、端口、用户名、密码,其他参数可以按默认设置。您可以点击测试连接按钮来验证连接是否可用,然后点击保存进行连接保存:

image-20230808182330603

利用 MatrixOne 数据制作可视化报表

  1. 创建 Demo 数据:

首先,登录到 MatrixOne 数据库,然后执行以下 SQL 语句来创建演示所需的数据表和视图:

`` 1. create database orders; 2. use orders; 3. CREATE TABLEcategory(product_category_nameVARCHAR(255) DEFAULT NULL, 4.product_category_name_englishVARCHAR(255) DEFAULT NULL ); 5. CREATE TABLEitem(order_idVARCHAR(255) NOT NULL,order_item_idINT DEFAULT null, 6.product_idVARCHAR(255) DEFAULT null, 7.seller_idVARCHAR(255) DEFAULT null,shipping_limit_dateDATETIME DEFAULT null, 8.priceDECIMAL(10,2) DEFAULT null, 9.freight_valueDECIMAL(10,2) DEFAULT null 10. ); 11. CREATE TABLEreview( 12.review_idVARCHAR(255) NOT NULL, 13.order_idVARCHAR(255) DEFAULT null, 14.review_scoreTINYINT DEFAULT null, 15.review_comment_titleVARCHAR(255) DEFAULT null, 16.review_comment_messageTEXT DEFAULT null, 17.review_creation_dateDATETIME DEFAULT null, 18.review_answer_timestampDATETIME DEFAULT null, 19. PRIMARY KEY (review_id) 20. ); 21. CREATE TABLEorder_time( 22.order_idVARCHAR(255) NOT NULL, 23.customer_idVARCHAR(255) DEFAULT null, 24.yINT DEFAULT null, 25.qINT DEFAULT null, 26.mINT DEFAULT null, 27.dDATE DEFAULT null, 28.hINT DEFAULT null, 29.order_purchase_timestampDATETIME DEFAULT null 30. ); 31. CREATE TABLEorders( 32.order_idVARCHAR(255) NOT NULL, 33.customer_idVARCHAR(255) DEFAULT null, 34.order_statusVARCHAR(255) DEFAULT null, 35.order_purchase_timestampDATETIME DEFAULT null, 36.order_approved_atDATETIME DEFAULT null, 37.order_delivered_carrier_dateDATETIME DEFAULT null, 38.order_delivered_customer_dateDATETIME DEFAULT null, 39.order_estimated_delivery_dateDATETIME DEFAULT null, 40. PRIMARY KEY (order_id) 41. ); 42. CREATE TABLEproduct( 43.product_idVARCHAR(255) NOT NULL, 44.product_category_nameVARCHAR(255) DEFAULT null, 45.product_name_lenghtINT DEFAULT null, 46.product_description_lenghtINT DEFAULT null, 47.product_photos_qtyINT DEFAULT null, 48.product_weight_gINT DEFAULT null, 49.product_length_cmINT DEFAULT null, 50.product_height_cmINT DEFAULT null, 51.product_width_cmINT DEFAULT null, 52. PRIMARY KEY (product_id) 53. ); 54. CREATE TABLErfm( 55.customer_idVARCHAR(255) DEFAULT null, 56.user_typeVARCHAR(255) DEFAULT null, 57.shijian` DATE DEFAULT null 58. );

  1. CREATE view total_order_value as select t.order_id,product_id,seller_id,(pricetotal)+(freight_valuetotal) as order_value from (select order_id,count(*) as total from item group by order_id) t join item on t.order_id=item.order_id;

  2. CREATE view order_detail as select a.order_id,product_id,seller_id, customer_id,round(order_value,2) as order_value, y,q,m,d,h,order_purchase_timestamp from total_order_value a inner join order_time b on a.order_id=b.order_id; ```

接下来,使用以下 SQL 导入语句,将预先准备的 Demo 数据导入到 MatrixOne 数据库的相应表中。

Note

请注意,路径 /root/data/table_name.csv 是各表数据文件的路径,您可以参考此过程自行生成数据。

1. use orders; 2. load data local infile '/root/data/category.csv' into table category FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY "\r\n"; 3. load data local infile '/root/data/review.csv' into table review FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY "\r\n"; 4. load data local infile '/root/data/product.csv' into table product FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY "\r\n"; 5. load data local infile '/root/data/item.csv' into table item FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY "\r\n"; 6. load data local infile '/root/data/order_time.csv' into table order_time FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY "\r\n"; 7. load data local infile '/root/data/orders.csv' into table orders FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY "\r\n"; 8. load data local infile '/root/data/rfm.csv' into table rfm FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY "\r\n"; 2. 添加数据集:

在 FineBI 中,点击公共数据,然后点击新建文件夹,创建并选择一个文件夹,然后点击新建数据集,选择 SQL 数据集,将 SQL 查询添加到选定的文件夹中。输入数据集名称并填写 SQL 查询,如下所示:

1. select d, 2. count(order_id) as order_num, 3. count(DISTINCT customer_id) 4. from orders.order_detail 5. group by d 6. order by d

您可以点击预览按钮查看 SQL 查询的结果,然后点击确定进行保存:

image-20230809091306270

下面是本示例中使用的所有查询 SQL 的示例:

``` 1. -- 日活用户数及订单数 2. select d, 3. count(order_id) as order_num, 4. count(DISTINCT customer_id) 5. from orders.order_detail 6. group by d 7. order by d

  1. -- 月活用户数及订单数
  2. select count(DISTINCT customer_id),
  3. count(order_id),
  4. concat(y, '-', m)
  5. from orders.order_detail
  6. group by y,m
  7. order by y,m

  8. -- 各时段活跃用户数及订单数

  9. select h,
  10. count(DISTINCT customer_id),
  11. count(order_id) order_num
  12. from orders.order_detail
  13. group by h
  14. order by h

  15. -- 各类型用户数量

  16. SELECT count(*),
  17. user_type
  18. from orders.rfm
  19. GROUP BY user_type

  20. -- 月 GMV

  21. select y,m,
  22. sum(order_value),
  23. concat(y, "-", m) month
  24. from orders.order_detail
  25. group by y,m
  26. order by y,m

  27. -- 季度 GMV

  28. select y,q,
  29. sum(order_value) gmv,
  30. concat(y, "季度", q) as quator
  31. from orders.order_detail
  32. group by y,q
  33. order by concat(y, "季度", q) asc

  34. -- 季度 ARPU

  35. select y,q,
  36. round((sum(order_value)/count(DISTINCT customer_id)),2) arpu,
  37. concat(y, "季度", q) as quator
  38. from orders.order_detail
  39. group by y,q
  40. order by y,q

  41. -- 月度 ARPU

  42. select y,m,
  43. round((sum(order_value)/count(DISTINCT customer_id)),2) arpu,
  44. concat(y, "-", m) as month
  45. from orders.order_detail
  46. group by y,m
  47. order by y,m

  48. -- 重要挽留用户热门指数

  49. SELECT e.product_category_name_english good_type,
  50. SUM(a.order_value) ordder_total_value,
  51. ROUND(AVG(c.review_score), 2) good_review_score,
  52. (0.7*SUM(a.order_value)+

  53. 0.310000ROUND(AVG(c.review_score), 7))

  54. top_rank_rate
  55. FROM orders.order_detail a
  56. INNER JOIN
  57. (SELECT customer_id
  58. from orders.rfm
  59. WHERE user_type='重要挽留用户' ) as b ON a.customer_id=b.customer_id
  60. LEFT JOIN orders.review c ON a.order_id=c.order_id
  61. LEFT JOIN orders.product d ON a.product_id=d.product_id
  62. LEFT JOIN orders.category e ON d.product_category_name=e.product_category_name
  63. where e.product_category_name_english is not NULL
  64. GROUP BY e.product_category_name_english limit 50

  65. -- 一般挽留用户热门指数

  66. SELECT e.product_category_name_english good_type,
  67. SUM(a.order_value) ordder_total_value,
  68. ROUND(AVG(c.review_score), 2) good_review_score,
  69. (0.7SUM(a.order_value)+0.310000*ROUND(AVG(c.review_score), 7))
  70. top_rank_rate
  71. FROM orders.order_detail a
  72. INNER JOIN
  73. (SELECT customer_id from orders.rfm
  74. WHERE user_type='一般挽留用户' ) as b ON a.customer_id=b.customer_id
  75. LEFT JOIN orders.review c ON a.order_id=c.order_id
  76. LEFT JOIN orders.product d ON a.product_id=d.product_id
  77. LEFT JOIN orders.category e ON d.product_category_name=e.product_category_name
  78. where e.product_category_name_english is not NULL
  79. GROUP BY e.product_category_name_english limit 50 ```
  80. 更新数据:

保存数据集后,您需要点击更新数据按钮,等待数据更新完成后才能进行分析:

image-20230809091814920 4. 创建分析主题:

本示例的分析主题用于可视化展示电商平台的一般挽留用户、重要挽留用户、月 ARPU、季度 ARPU、不同时段活跃用户、日活跃用户、月活跃用户数及订单数等数据,以辅助决策和提升业务。创建分析主题的具体步骤如下:

  • 点击我的分析,然后点击新建文件夹,创建并选择一个文件夹。
  • 点击新建分析主题,选择上一步创建的数据集,然后点击确定。

image-20230809092959252

Note: 您可以使用批量选择功能来选择多个数据集进行主题分析。

image-20230809092959252

点击添加组件按钮,选择图表类型,将左侧的字段按需要拖动到右侧,双击修改字段可视化名称,在下方修改组件名称,组件名称即该组件所分析的报表内容:

image-20230809092959252

image-20230809092959252 5. 组装仪表板:

点击添加仪表板,将刚刚创建的组件添加到仪表板中。您可以自由拖动和缩放组件的大小和位置,并在下方修改组件名称,以描述该组件所分析的报表内容。

image-20230810123913230 6. 发布仪表板:

组装完成后,点击申请发布,设置发布名称、发布节点和展示平台。然后点击确认,您的仪表板将成功发布。

image-20230810123913230

现在,您可以在首页导航下找到刚刚发布的仪表板,并查看其展示效果。

image-20230810131752645