开发者社区> 问答> 正文

映射表使用最佳实践的几种办法

映射表主要用于用户存储静态数据,其主要功能包含:

用户在进行日志清洗后,将清洗出的字段通过进行静态 Join 获取需要的目标字段。

用户在进行数据集查询时,可以结合维表进行组合查询。

静态 Join 案例

映射表的新建与使用

假设用户日志格式如下:

2017-01-09 16:02:49|42.**.**.**|Kevin.yang
如下图为原始切分逻辑,切分后的字段分别为 date、ip、username。

原始切分

现在业务需求是统计每分钟每个国家的用户访问量,但是切分模型没有相关的国家字段。这时候通过映射表可以进行 Join ,映射表中保存了 IP 与国家、省份、城市的映射关系,如下图所示为结合映射表之后的逻辑:

JOIN

通过上图可以发现,国家、省份、城市这三个字段根据原始的 IP 字段获得了,问题来了,上图中“映射表 ID”是怎么设置的呢?

在控制台左侧菜单栏选择配置管理>映射表管理,单击右侧新建映射表。

填写映射表名称。

新建映射表

填写映射表的 schema 信息:针对上述需求 ip 转化为国家、省份与城市,其 schema 信息详相当于源字段信息(名称、类型)与目标字段信息(名称、类型)的映射关系。

注意: 类型仅仅支持 string、long、double 类型。

选择映射表的资源类型(目前只支持文本类型 TEXT,后续会支持其他接入方式)。

如果映射表的类型为文本类型,需要添加文本内容,文本内容可以参考样例数据进行录入,如图针对上述需求文本中只录入了一个 ip 的映射关系,文本内容必须严格按照 schema 设定的形式,否则无法保存。

映射表保存后系统生成一个唯一的维表 ID ,填入上述的积木块中即可。

映射表数据更新

针对上述的案例,用户可能会提出这样的问题,刚刚映射表中的文本中只配置了 IP 为42...** 的映射关系,用户上述的任务已经运行起来了,但是实际日志中包含其他 IP,利用刚才建立的映射表进行静态 Join 岂不是有问题的?

不用担心,用户无需停止任务,只需要更新一下映射表里面的文本数据即可。

更新

修改映射表时,映射表的 schema 与资源类型不能修改。

如上图所示当资源类型为文本类型时,修改文本内容即可。

基于映射表进行数据集的组合查询

在控制台左侧菜单栏选择监控管理>数据集管理,单击右侧数据查询。下面演示一个简单的示例:

444

如上数据集存在维度 _hostIp ,选择下钻,其结果如下所示:

555

现在需要查询各个省份、地址详细的数据咋办?只需要对 _hostIp 进行 Join 查询,我们已经在自己的维表中配置 IP 到地区的详细映射关系了。

666

其查询后的详细数据如下:

666

注意: 目前组合查询只支持维度的 Join,其他字段暂时不支持。

展开
收起
猫饭先生 2017-10-31 10:46:30 2071 0
0 条回答
写回答
取消 提交回答
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Phoenix 全局索引原理与实践 立即下载
RowKey与索引设计:技巧与案例分析 立即下载
事务、全局索引、透明分布式 立即下载