Wedata数据治理产品应用

2023-11-21 10:09:12 浏览数 (3)

什么是Wedata

数据开发治理平台 WeData(以下简称 WeData)是位于云端的一站式数据开发治理平台,融合了包含数据集成、数据开发、任务运维的全链路 DataOps 数据开发能力,以及数据地图、数据质量、数据安全等一系列数据治理和运营能力,帮助企业在数据构建和应用的过程中实现数据价值最大化,更多见产品文档:https://cloud.tencent.com/document/product/1267/47990

以下为wedata应用场景图。

如何应用Wedata

通过腾讯云以下三个产品来模拟用户使用Wedata的真实场景。

  • MySQL服务器
  • EMR
  • Wedata

购买产品时需要注意,购买相同的地域、相同的VPC,还需要提前看一下各地域云服务的资源是否充足,以下以上海地区为例。

购买MySQL

数据库购买地址见(https://buy.cloud.tencent.com/cdb?regionId=4)

可以创建一个VPC,其他产品如Wedata、EMR和MySQL都放到这个VPC下。

购买后再次确认配置( 因模拟环境使用,我购买的均为低配版本)。

购买后需要创建数据库

登录并创建数据库(streamdemo)

创建库表方式如下。

建表建库SQL ,注意时间戳为测试当天。

代码语言:javascript复制
#建表
DROP TABLE IF EXISTS `streamdemo`.`productinfo`;
DROP TABLE IF EXISTS `streamdemo`.`productorder`;
DROP TABLE IF EXISTS `streamdemo`.`userinfo`;
#订单表
CREATE TABLE IF NOT EXISTS `streamdemo`.`productorder` (
  `product_id` int COMMENT "商品ID",
  `user_id` int COMMENT "用户ID",
  `number` int NULL COMMENT "下单数量",
  `create_time` datetime COMMENT "下单时间",
   PRIMARY KEY (`product_id`, `user_id`)
);
#商品信息表
CREATE TABLE IF NOT EXISTS `streamdemo`.`productinfo` (
  `product_id` int NULL COMMENT "商品ID",
  `product_name` varchar(100) NULL COMMENT "商品名称",
  `price` float NULL COMMENT "商品价格",
  `create_time` datetime NULL COMMENT "上架时间",
  `description` varchar(500) NULL COMMENT "商品描述"
);
#用户信息
CREATE TABLE IF NOT EXISTS `streamdemo`.`userinfo` (
  `user_id` int NULL COMMENT "用户ID",
  `user_name` varchar(100) NULL COMMENT "用户名",
  `password` varchar(100) NULL COMMENT "登录密码",
  `create_time` datetime NULL COMMENT "创建时间"
);

use streamdemo;
#初始化数据
 insert into productorder values(1001, 101, 1, '2023-11-01 15:51:06');
 insert into productorder values(1002, 102, 2, '2023-11-01 15:51:06');
 insert into productorder values(1003, 103, 3, '2023-11-01 15:51:06');
 insert into productorder values(1004, 104, 4, '2023-11-01 15:51:06');
 insert into productorder values(1005, 105, 5, '2023-11-31 15:51:06');
 insert into productorder values(1006, 106, 6, '2023-11-31 15:51:06');

 insert into productorder values(1001, 105, 21, '2023-11-01 15:51:06');
 insert into productorder values(1002, 106, 15, '2023-11-01 15:51:06');
 insert into productorder values(1003, 104, 12, '2023-11-01 15:51:06');
 insert into productorder values(1004, 103, 18, '2023-11-01 15:51:06');
 insert into productorder values(1005, 101, 6, '2023-11-01 15:51:06');
 insert into productorder values(1006, 102, 9, '2023-11-31 15:51:06');

 insert into productorder values(1001, 103, 3, '2023-11-01 15:51:06');
 insert into productorder values(1002, 101, 4, '2023-11-01 15:51:06');
 insert into productorder values(1003, 102, 18, '2023-11-01 15:51:06');
 insert into productorder values(1004, 106, 21, '2023-11-01 15:51:06');
 insert into productorder values(1005, 104, 3, '2023-11-31 15:51:06');
 insert into productorder values(1006, 105, 8, '2023-11-31 15:51:06');

 insert into productinfo values(1001, '商品1', 1, '2023-11-01 15:51:06', '最新商品1');
 insert into productinfo values(1002, '商品2', 200, '2023-11-01 15:51:06', '最新商品2');
 insert into productinfo values(1003, '商品3', 300, '2023-11-01 15:51:06', '最新商品3');
 insert into productinfo values(1004, '商品4', 400, '2023-11-01 15:51:06', '最新商品4');
 insert into productinfo values(1005, '商品5', 500, '2023-11-01 15:51:06', '最新商品5');
 insert into productinfo values(1006, '商品6', 600, '2023-11-01 15:51:06', '最新商品6');

 insert into userinfo values(101, 'user01', 'user01', '2023-11-01 15:51:06');
 insert into userinfo values(102, 'user02', 'user02', '2023-11-01 15:51:06');
 insert into userinfo values(103, 'user03', 'user03', '2023-11-01 15:51:06');
 insert into userinfo values(104, 'user04', 'user04', '2023-11-01 15:51:06');
 insert into userinfo values(105, 'user05', 'user05', '2023-11-01 15:51:06');
 insert into userinfo values(106, 'user06', 'user06', '2023-11-01 15:51:06');

创建EMR

购买EMR (https://console.cloud.tencent.com/emr)

确认配置点击购买。需要注意:

  • 每个地域的资源情况不一,测试期间推荐s5机型,当前相对资源较多(购买时以线上环境为准)
  • 如果资源不够或出现异常情况,页面会提示创建不成功,这里服务是不收费的,可以联系腾讯云客服或再次购买来解决。

Wedata

项目配置

首先创建项目

再次进入资源配置,设置好资源组、集成资源等

添加数据源

数据开发

创建hive库表

在新建的 streamdemo_hive 的数据库中,创建名为 productorder_hive、productinfo_hive、userinfo_hive 的三张hive数据表。

使用提供的建表语句,将 productorder_hive 表创建完成。productinfo_hive、userinfo_hive 表的创建方式相同。

代码语言:javascript复制
#创建订单表
CREATE TABLE IF NOT EXISTS `streamdemo_hive`.`productorder_hive`
(
`product_id` INT,
`user_id` INT,
`number` INT,
`create_time` STRING
) 
#创建商品信息表
CREATE TABLE IF NOT EXISTS `streamdemo_hive`.`productinfo_hive`
(
`product_id` INT,
`product_name` STRING,
`price` FLOAT,
`create_time` STRING,
`description` STRING
) 
#创建用户信息表
CREATE TABLE IF NOT EXISTS `streamdemo_hive`.`userinfo_hive`
(
`user_id` INT,
`user_name` STRING,
`password` STRING,
`create_time` STRING
)

新建离线同步,将MYSQL数据同步到HIVE中。

进入编排空间,将数据库资源导入hive

创建hive表

关系映射

最终三张表链接hive,其中666(为spark sql) ,提交运行

代码语言:javascript复制
--判断建表
CREATE TABLE IF NOT EXISTS streamdemo_hive.ads_product_agg(
 create_date string,
 user_name string,
 product_name string,
 cost FLOAT
) STORED AS ORC;
--覆盖数据
use streamdemo_hive;
insert overwrite table streamdemo_hive.ads_product_agg
select
 po.create_date,
 pi.product_name,
 ui.user_name,
 (po.sumnumber * pi.price) as cost
from(
  select
   create_date,
   product_id,
   user_id,
   sum(number) sumnumber
  from(
    select
     product_id,
     user_id,
     create_time,
     from_unixtime(
      unix_timestamp(create_time, 'yyyy-MM-dd HH:mm:ss'),
      "yyyy-MM-dd"
     ) as create_date,
     number
    from
     streamdemo_hive.productorder_hive
    where
     create_time >= '2023-09-01 00:00:00'
     and create_time <= '2023-09-01 23:59:59'
   )
  group by
   create_date,
   product_id,
   user_id
 ) po
 join (
  select
   product_id,
   product_name,
   price
  from
   streamdemo_hive.productinfo_hive
 ) pi on po.product_id = pi.product_id
 join (
  select
   user_id,
   user_name
  from
   streamdemo_hive.userinfo_hive
 ) ui on po.user_id = ui.user_id

运维中心

数据质量

统计金额

代码语言:javascript复制
use streamdemo_hive;
select create_date,product_name,user_name,sum(cost) as sumcost from ads_product_agg where create_date >= date_add(CURRENT_DATE(),-6) and create_date<=CURRENT_DATE() group by create_date,product_name,user_name order by sumcost desc

0 人点赞