Looker 包含多个内置地图层,但您也可以定义自定义地图区域来显示地理位置数据。假设您有一个包含三个社区平均年龄的表格,如下所示:
| 客户社区 | 客户平均年龄 |
|---|---|
| 市中心 | 19.5292 |
| eastside | 54.4626 |
| 西区 | 34.9534 |
您可能需要将客户社区与特定地理区域相关联,以便在地图上直观呈现。为此,请按照本页中所述的步骤操作。
准备区域数据
若要准备区域数据,您需要一个数据文件,其中包含每个区域的地理形状,以及将区域与数据库中的数据相关联的元数据。
Looker 使用一种名为 TopoJSON 的格式以紧凑的方式存储这些数据。您可以轻松地从许多常见的 shapefile 格式创建 TopoJSON 文件,也可以使用在线工具自行绘制一个,详情请参阅将 shapefile 转换为 TopoJSON 社区帖子。
在此示例中,假设已经准备好一个提供此映射的 TopoJSON 文件。TopoJSON 文件中的每个区域都有一个名为 neighborhood 的属性,该属性与 LookML 项目中定义为维度(名为 neighborhood)的客户社区字段的值相匹配。
上传区域数据
如需将区域数据导入 Looker,您可以将 TopoJSON 文件拖放到项目的文件浏览器部分。这些数据将与 LookML 代码一起提交,并像 LookML 项目中的任何其他代码一样进行更新。
创建地图图层
现在,您已在项目中添加了区域数据,接下来需要在 LookML 模型中创建地图图层。
您可以使用 map_layer 参数在模型文件中添加定义:
map_layer: my_neighborhood_layer {
file: "neighborhoods.topojson"
property_key: "neighborhood"
}
file 参数引用的是项目中包含区域数据的文件名,而 property_key 是您要在 Looker 中公开的数据集的属性。如果您不确定密钥是什么,只需省略属性键,Looker 会尝试选择合适的键。
提示:您还可以使用托管在其他在线位置的 TopoJSON 文件,只需在图层定义中指定url而不是file即可:
map_layer: my_neighborhood_layer {
url: "https://raw.githubusercontent.com/cooluser/JSON_Stuff/master/Neighborhoods.topoJSON"
property_key: "neighborhood"
}
将地图图层与数据相关联
剩下的唯一任务是应用 map_layer_name 参数,将视图中的维度 neighborhood 与新创建的地图图层相关联。
dimension: neighborhood {
sql: ${TABLE}.neighborhood ;;
map_layer_name: my_neighborhood_layer
}
这会告知 Looker,相应维度的值与地图图层公开的 property_key 相关联。它还会让 Looker 知道可以在地图上显示此数据。
查看地图
使用 neighborhood 维度的查询现在可以在“探索”页面上的地图中显示: