当前位置: 首页 > news >正文

asp企业网站源码下载学做网站教程视频

asp企业网站源码下载,学做网站教程视频,酒店网站开发需求是企业写的吗,试百客 专业做试用的网站简介#xff1a; 本文将会介绍Hologres基于roaringbitmap实现超高基数的UV计算 RoaringBitmap是一种压缩位图索引#xff0c;RoaringBitmap自身的数据压缩和去重特性十分适合对于大数据下uv计算。其主要原理如下#xff1a; 对于32bit数, RoaringBitmap会构造2^16个桶 本文将会介绍Hologres基于roaringbitmap实现超高基数的UV计算 RoaringBitmap是一种压缩位图索引RoaringBitmap自身的数据压缩和去重特性十分适合对于大数据下uv计算。其主要原理如下 对于32bit数, RoaringBitmap会构造2^16个桶对应32位数的高16位32位数的低16位则映射到对应桶的一个bit上。单个桶的容量由桶中的已有的最大数值决定bitmap把32位数用1位表示可以大大地压缩数据大小。bitmap位运算为去重提供了手段。 主体思想T1把上一天的所有数据根据最大的查询维度聚合出的uid结果放入RoaringBitmap中把RoaringBitmap和查询维度存放在聚合结果表每天百万条。之后查询时利用Hologres强大的列存计算直接按照查询维度去查询聚合结果表对其中关键的RoaringBitmap字段做or运算进行去重后并统计基数即可得出对应用户数UVcount条数即可计算得出PV达到亚秒级查询。 只需进行一次最细粒度的预聚合计算也只生成一份最细粒度的预聚合结果表。得益于Hologres的实时计算能力该方案下预计算所需的次数和空间都达到较低的开销。 Hologres计算UV、PV方案详情 图1 Hologres基于RoaringBitmap计算pv uv流程 1.创建相关基础表 1使用RoaringBitmap前需要创建RoaringBitmap extention语法如下同时该功能需要Hologres  0.10版本。 CREATE EXTENSION IF NOT EXISTS roaringbitmap; 2创建表ods_app为明细源表存放用户每天大量的明细数据 按天分区其DDL如下 BEGIN; CREATE TABLE IF NOT EXISTS public.ods_app (uid text,country text,prov text,city text,channel text,operator text,brand text,ip text,click_time text,year text,month text,day text,ymd text NOT NULL ); CALL set_table_property(public.ods_app, bitmap_columns, country,prov,city,channel,operator,brand,ip,click_time, year, month, day, ymd); --distribution_key根据需求设置根据该表的实时查询需求从什么维度做分片能够取得较好效果即可 CALL set_table_property(public.ods_app, distribution_key, uid); --用于做where过滤条件包含完整年月日时间字段推荐设为clustering_key和event_time_column CALL set_table_property(public.ods_app, clustering_key, ymd); CALL set_table_property(public.ods_app, event_time_column, ymd); CALL set_table_property(public.ods_app, orientation, column); COMMIT; 3创建表uid_mapping为uid映射表uid映射表用于映射uid到32位int类型。 RoaringBitmap类型要求用户ID必须是32位int类型且越稠密越好用户ID最好连续而常见的业务系统或者埋点中的用户ID很多是字符串类型因此使用uid_mapping类型构建一张映射表。映射表利用Hologres的SERIAL类型自增的32位int来实现用户映射的自动管理和稳定映射。 注: 该表在本例每天批量写入场景可为行存表也可为列存表没有太大区别。如需要做实时数据例如和Flink联用需要是行存表以提高Flink维表实时JOIN的QPS。 BEGIN;CREATE TABLE public.uid_mapping (uid text NOT NULL,uid_int32 serial,PRIMARY KEY (uid) );--将uid设为clustering_key和distribution_key便于快速查找其对应的int32值 CALL set_table_property(public.uid_mapping, clustering_key, uid); CALL set_table_property(public.uid_mapping, distribution_key, uid); CALL set_table_property(public.uid_mapping, orientation, row); COMMIT; 3创建表dws_app基础聚合表用于存放在基础维度上聚合后的结果 基础维度为之后进行查询计算pv和uv的最细维度这里以country prov city为例构建聚合表 begin; create table dws_app(country text,prov text,city text, ymd text NOT NULL, --日期字段uid32_bitmap roaringbitmap, -- UV计算pv integer, -- PV计算primary key(country, prov, city, ymd)--查询维度和时间作为主键防止重复插入数据 ); CALL set_table_property(public.dws_app, orientation, column); --clustering_key和event_time_column设为日期字段便于过滤 CALL set_table_property(public.dws_app, clustering_key, ymd); CALL set_table_property(public.dws_app, event_time_column, ymd); --distribution_key设为group by字段 CALL set_table_property(public.dws_app, distribution_key, country,prov,city); end; 2.更新dws表及id_mapping表 每天从上一天的uid中找出新客户uid映射表uid_mapping中没有的uid插入到uid映射表中 WITH -- 其中ymd 20210329表示上一天的数据user_ids AS ( SELECT uid FROM ods_app WHERE ymd 20210329 GROUP BY uid ),new_ids AS ( SELECT user_ids.uid FROM user_ids LEFT JOIN uid_mapping ON (user_ids.uid uid_mapping.uid) WHERE uid_mapping.uid IS NULL ) INSERT INTO uid_mapping SELECT new_ids.uid FROM new_ids ; 更新完uid映射表后将数据做聚合运算后插入聚合结果表主要步骤如下 首先通过源表inner join uid映射表得到上一天的聚合条件和对应的uid_int32然后按照聚合条件做聚合运算后插入RoaringBitmap聚合结果表作为上一天的聚合结果每天只需进行一次聚合存放一份数据数据条数最坏等于UV的量。以案例说明明细表每天几亿的增量在聚合结果表每天只需存放百万级数据。 WITHaggregation_src AS( SELECT country, prov, city, uid_int32 FROM ods_app INNER JOIN uid_mapping ON ods_app.uid uid_mapping.uid WHERE ods_app.ymd 20210329 ) INSERT INTO dws_app SELECT country,prov,city,20210329,RB_BUILD_AGG(uid_int32),COUNT(1) FROM aggregation_src GROUP BY country,prov,city ; 3.UV、PV查询 查询时从汇总表dws_app 中按照查询维度做聚合计算查询bitmap基数得出Group by条件下的用户数 --运行下面RB_AGG运算查询可先关闭三阶段聚合开关性能更佳默认关闭 set hg_experimental_enable_force_three_stage_aggoff --可以查询基础维度任意组合任意时间段的uv pv SELECT country,prov,city,RB_CARDINALITY(RB_OR_AGG(uid32_bitmap)) AS uv,sum(1) AS pv FROM dws_app WHERE ymd 20210329 GROUP BY country,prov,city;--查一个月 SELECT country,prov,RB_CARDINALITY(RB_OR_AGG(uid32_bitmap)) AS uv,sum(1) AS pv FROM dws_app WHERE ymd 20210301 and ymd 20210331 GROUP BY country,prov; 该查询等价于 SELECT country,prov,city,COUNT(DISTINCT uid) AS uv,COUNT(1) AS pv FROM ods_app WHERE ymd 20210329 GROUP BY country,prov,city;SELECT country,prov,COUNT(DISTINCT uid) AS uv,COUNT(1) AS pv FROM ods_app WHERE ymd 20210301 and ymd 20210331 GROUP BY country,prov; 4.可视化展示 计算出UV、PV和大多数情况需要用BI工具以更直观的方式可视化展示由于需要使用RB_CARDINALITY 和 RB_OR_AGG 进行聚合计算需要使用BI的自定义聚合函数的能力常见的具备该能力的BI包括Apache Superset和Tableau下面将会讲述这两个BI工具的最佳实践。 4.1 使用 Apache Superset Apache Superset 对接 Hologres 的方式请参考产品手册。在Superset中可以直接使用dws_app表作为Dataset使用 并且在数据集中创建一个单独Metrics名为UV表达式如下 RB_CARDINALITY(RB_OR_AGG(uid32_bitmap)) 然后您就可以开始探索数据了 当然也可以创建Dashborad 4.2 使用 Tableau Tableau 对接 Hologres 的方式请参考产品手册。可以使用Tableau的直通函数直接实现自定义函数的能力详细介绍请参照Tableau的手册。在Tableau对接Hologres后可以创建一个计算字段表达式如下 RAWSQLAGG_INT(RB_CARDINALITY(RB_OR_AGG(%1)), [Uid32 Bitmap]) 然后您就可以开始探索数据了 当然也可以创建Dashborad 原文链接 本文为阿里云原创内容未经允许不得转载。
http://wiki.neutronadmin.com/news/407732/

相关文章:

  • 做网站一个月需要多少钱seo关键词布局案例
  • 网站模板和定制的区别潍坊做网站好看
  • 旅游网站内容规划自己买空间做网站
  • 有哪些做网站的公司好世界工业设计大学排名前25
  • 免费建站系统哪个好用吗北京产品网站设计哪家专业
  • 外国做的中国动画视频网站提高怎样做网站的外链
  • 网站推广公司 优帮云网站设计一个版块
  • 自媒体平台申请注册石家庄网站建设seo优化营销
  • 广州做网站优化费用上海做网站推广公司
  • discuz可以做公司网站信息分类网站建设
  • 网站开发昆山做网站全屏图片拉长代码
  • 网站设计标题沈阳网站推广优化排名公司
  • 给网站app做后台的公司乡镇网站建设自查报告
  • 返利网网站怎么做网站建设代理公司
  • 儿童 网站 设计欣赏找项目做区域代理
  • 宁夏城乡和住房建设厅网站app设计原则
  • 如皋市建设局网站网站建设硬件开支
  • wap购物网站源码近期军事新闻热点事件
  • 公司网站开发网盘资源
  • asp做网站主要技术网站建设asp
  • 哪里建设网站神级网页设计网站
  • 潍坊信息网网站建设做企业网站的尺寸是多少钱
  • 郑州建设企业网站找哪个公司餐饮品牌策划
  • 网站规划建设与管理维护教学大纲百度seo培训公司
  • 十大搞笑素材网站建行网站网址
  • 网站页面风格分类邢台开发区网站
  • 哪个网站可以免费做国外网站大连 网站
  • 广州市专业网站设计金水区网站建设
  • 小型旅游网站建设方案wordpress 进度插件
  • 各网站网络营销产品价格策略wordpress免插件代码高亮