本文介绍了关于使用映射表的最佳实践。

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

  • 清洗日志后,通过对清洗出的字段进行静态 Join 操作来获取需要的目标字段。

  • 查询数据集时,可以结合映射表进行组合查询。

静态 Join 使用案例

假设用户日志格式如下:

2017-01-09 16:02:49|42.**.**.**|Kevin.Yang

下图为原始切分逻辑,切分后的字段分别为 dateip 和 username

图 1. 原始切分逻辑
图 2. 原始切分结果

由于切分模型中没有相关的国家字段,如需统计每分钟每个国家的用户访问量,可以通过映射表进行 Join 操作。映射表中保存了 IP 与国家、省份、城市的映射关系。下图为结合映射表之后的切分逻辑。

图 3. 结合映射表的切分逻辑
图 4. 结合映射表的切分结果

可见,国家、省份、城市这三个字段已根据原始的 IP 字段获得,那么图片图 3中的“映射表 ID”从何而来呢?

以下是为本例新建映射表的步骤。

  1. 在控制台左侧导航栏中选择自定义监控 > 映射表管理,进入映射表管理页面。在页面右上角单击新建映射表
  2. 新建映射表对话框中填写相关信息。
    图 5. 新建映射表
    1. 填写映射表的 Schema 信息:Schema 信息代表源字段信息(名称、类型)与目标字段信息(名称、类型)的映射关系。
      注意 仅支持 String、Long、Double 类型。
    2. 按照样例数据的格式,在文本内容中输入您的数据。由于本例的需求是将 IP 转化为地址,上图中的内容是 IP 与地址的映射关系。
      说明 文本内容必须严格按照 Schema 设定的形式,否则无法保存。
  3. 新建映射表对话框中单击确定,系统会为此映射表生成一个唯一的资源 ID 。将此资源 ID 填入“ARMS 映射表资源”积木块中即可。

在以上示例中,映射表中只为 IP 42.**.**.** 配置了映射关系。当监控任务开始运行后,如果实际日志中包含其他 IP,利用上述映射表进行静态 Join 会不会有问题?

不用担心,您无需停止任务,只需要更新映射表里面的文本内容即可。

图 6. 编辑映射表
说明 编辑映射表时,Schema 不能修改。

数据集组合查询使用示例

以下是一个利用映射表进行数据集组合查询的简单案例。

在控制台左侧导航栏中选择自定义监控 > 数据集管理,单击右侧的查询数据

图 7. 数据查询

以上数据集存在维度_hostIp ,单击查询,结果如下所示。

图 8. 查询结果

现在需要查询各个省份、地址的详细数据,该怎么做?只需要对_hostIp 进行 Join 查询即可,因为我们已经在自己的映射表中配置 IP 与地区的映射关系。

图 9. 映射表配置

查询后的详细数据如下所示。

图 10. 详细数据