地点数据分析数据洞察可视化图表

概览

此工作流图展示了数据洞察将城市、日期和时间等动态参数发送到 BigQuery 中的地点数据分析,以生成地理空间密度热图。

本文档介绍了如何使用地点数据分析和数据洞察构建动态地理空间报告。让非技术利益相关方能够自行解答问题,从而释放位置数据的价值。本指南介绍了如何将静态报告转换为交互式热图样式工具,以便进行市场分析,而无需为每个请求编写 SQL。支持访问复杂的位置数据,从而弥合数据工程与商业智能之间的差距。

采用这种架构模式可带来以下几项关键优势:

  • 可视化数据呈现:将地点数据分析数据转换为交互式地图和图表,直观呈现空间密度和趋势。
  • 无需 SQL 即可简化探索:使团队成员(例如市场分析师或房地产规划师)能够使用预定义参数(例如,使用下拉菜单更改“城市”或“时段”)动态过滤数据。他们无需编写任何 SQL 代码即可探索数据。
  • 无缝协作:标准数据洞察共享功能可让您安全地分发这些互动式数据洞见。

解决方案工作流

以下工作流可建立高性能的报告架构。它从静态基准转变为完全动态的应用,在引入复杂性之前确保数据正确性。

前提条件

在开始之前,请按照这些说明设置地点数据分析。您需要有权访问数据洞察,这是一款免费工具。

第 1 步:建立静态地理空间基准

在引入交互性之前,请先建立一个基本查询,并确保其在数据洞察中正确呈现。使用地点数据分析和 BigQuery 的地理空间功能,通过 H3 索引系统将数据汇总到六边形网格中。这将生成一个查询输出,该输出可与数据洞察的填充地图图表类型结合使用,以实现可视化。

1.1 连接数据

使用以下静态查询建立初始连接。它定位到固定位置(伦敦)和类别(餐厅),以验证数据流水线。

SELECT
  h3_index,
  `carto-os.carto.H3_BOUNDARY`(h3_index) AS h3_geo,
  restaurant_count
FROM (
  SELECT WITH AGGREGATION_THRESHOLD
    `carto-os.carto.H3_FROMGEOGPOINT`(point, 8) AS h3_index,
    COUNT(*) AS restaurant_count
  FROM
    -- Note: Change 'gb' to your target country code (e.g., 'us')
    `places_insights___gb.places`
  WHERE
    'London' IN UNNEST(locality_names)
    AND 'restaurant' IN UNNEST(types)
  GROUP BY
    h3_index
)
ORDER BY
  restaurant_count DESC;

关于空间汇总的说明

此查询使用 Google Cloud BigQuery 中公开提供的 CARTO Analytics Toolbox (carto-os) 中的函数。H3_FROMGEOGPOINT 函数可将特定位置点转换为 H3 单元格,该系统将世界划分为六边形网格单元。

我们之所以使用这种转换,是因为数据洞察的填充地图需要多边形(形状)来呈现颜色。通过将点转换为六边形,我们可以直观呈现特定区域内的商家密度,而不是绘制数千个重叠的点。

关于汇总阈值的说明

所有地点数据分析查询都需要 WITH AGGREGATION_THRESHOLD 子句。 此隐私保护功能可确保仅在汇总计数不低于 5 时才返回数据。

在此可视化图表中,如果 H3 网格单元包含的餐厅少于 5 家,则该单元会从结果集中完全省略,并在地图上显示为空白。

如需在数据洞察中实现此目的,请执行以下操作:

  1. 创建新的空白报告。
  2. 选择 BigQuery 作为数据连接器。
  3. 从左侧菜单中选择自定义查询,然后选择您的结算项目 ID。
  4. 将上面的静态基本查询粘贴到编辑器中。
  5. 清除使用旧版 SQL、启用日期范围和启用查看者电子邮件地址参数。
  6. 点击添加。

1.2 配置地理空间可视化

连接数据后,配置数据洞察以正确识别 H3 边界数据:

  1. 从添加图表菜单中,向报告画布添加填充地图可视化图表。
  2. 确保包含多边形几何图形的 h3_geo 字段已设置为地理空间数据类型。
    1. 点击连接名称旁边的修改数据源(铅笔)图标。
    2. 如果 h3_geo 设置为文本 (ABC),请使用下拉菜单依次选择地理位置 > 地理空间,
    3. 点击完成。
  3. 将 h3_index 字段映射到位置(作为唯一标识符)。
  4. 将 h3_geo 字段映射到地理空间字段(充当多边形几何图形)。
  5. 将 restaurant_count 字段映射到颜色指标。

这将呈现按 H3 单元格划分的餐馆密度地图。深蓝色(默认颜色选项)表示单元格中的餐馆数量较多。

一张伦敦的填充地图,上面覆盖着六边形网格,其中深蓝色单元格表示餐厅集中度较高。图例显示密度计数范围为 5 到 1,215。

第 2 步:实现动态参数

为了使报告具有互动性,我们将在报告中添加控件,以便用户从以下选项中进行选择:

  • 城市:控制报告重点关注的城市。
  • 星期几:根据地点营业的日期过滤地点,利用架构中的 regular_opening_hours 记录。
  • 一天中的小时:通过与 start_time 和 end_time 字段进行比较,根据营业时间过滤地点。

为此,您需要在运行时将用户选择的参数直接传递到修改后的地点数据分析查询中。在数据洞察的数据源编辑器中,您必须将这些参数明确定义为类型化变量。

在数据洞察中,选择资源菜单,然后点击管理添加的数据源。在显示的面板中,针对我们之前添加的 BigQuery 自定义 SQL 数据源,选择 EDIT。

在“修改连接”窗口中,选择添加参数。我们将添加三个参数,其值如下。

参数名称 数据类型 允许的值 值列表(必须与数据库完全匹配)
p_locality 文本 值列表
值 标签
London 伦敦
Manchester 曼彻斯特
Birmingham 伯明翰
Glasgow 格拉斯哥
p_day_of_week 文本 值列表
值 标签
monday 星期一
tuesday 星期二
wednesday 星期三
thursday 星期四
friday 星期五
saturday 星期六
sunday 星期日
p_hour_of_day 文本 值列表
值 标签
03:00:00 凌晨 3 点至凌晨 4 点
08:00:00 上午 8 点至上午 9 点
19:00:00 晚上 7 点至 8 点

p_hour_of_day 参数的配置示例。

p_hour_of_day 参数的配置界面,其中显示了值列表部分,时间字符串映射到可读标签。

对于 p_hour_of_day 参数,请密切注意 Value 列。 由于 SQL 查询使用 CAST(@p_hour_of_day AS TIME),因此从数据洞察传递的值必须采用严格的 HH:MM:SS 格式(24 小时制)。

设置并保存所有三个参数后,修改 BigQuery 自定义 SQL 连接,以使用 @ 语法引用这些变量。

为此,请点击“修改连接”,然后粘贴以下修改后的查询:

SELECT
  h3_index,
  `carto-os.carto.H3_BOUNDARY`(h3_index) AS h3_geo,
  restaurant_count
FROM (
  SELECT WITH AGGREGATION_THRESHOLD
    `carto-os.carto.H3_FROMGEOGPOINT`(point, 8) AS h3_index,
    COUNT(*) AS restaurant_count
  FROM
    `places_insights___gb.places`
  WHERE
    -- Dynamic locality filter based on parameter
    @p_locality IN UNNEST(locality_names)
    AND 'restaurant' IN UNNEST(types)
    AND business_status = 'OPERATIONAL'
    AND EXISTS (
      SELECT 1
      FROM UNNEST(
        CASE @p_day_of_week
          WHEN 'monday' THEN regular_opening_hours.monday
          WHEN 'tuesday' THEN regular_opening_hours.tuesday
          WHEN 'wednesday' THEN regular_opening_hours.wednesday
          WHEN 'thursday' THEN regular_opening_hours.thursday
          WHEN 'friday' THEN regular_opening_hours.friday
          WHEN 'saturday' THEN regular_opening_hours.saturday
          WHEN 'sunday' THEN regular_opening_hours.sunday
        END
      ) AS hours
      WHERE hours.start_time <= CAST(@p_hour_of_day AS TIME)
        AND hours.end_time >= TIME_ADD(CAST(@p_hour_of_day AS TIME), INTERVAL 1 HOUR)
    )
  GROUP BY
    h3_index
)
ORDER BY
  restaurant_count DESC;

点击“重新连接”以保存修改。在修改后的查询中,请注意新变量(例如 @p_hour_of_day),这些变量与我们刚刚设置的参数名称相关。

返回到报告画布,向最终用户公开这些参数:

  1. 向报告中添加三个下拉列表控件。
  2. 对于每个控件,将控件字段设置为与您新创建的参数相对应:
    • 对照组 1:p_locality
    • 对照组 2:p_day_of_week
    • 对照组 3:p_hour_of_day

最终报告应如下所示。更改其中一个下拉控件中的值会触发数据洞察从地点数据分析中提取请求的数据,然后在地图上直观呈现。

最终的互动式报告,其中显示了格拉斯哥的餐厅密度地图,顶部有三个下拉过滤条件。“时段”菜单已展开,显示可选择的时间范围。

第 3 步:分享结果

使用数据洞察中内置的共享工具共享报告。这样,观看者就可以根据他们从下拉列表中选择的参数动态更新可视化图表。

总结

此模式创建了一个可扩缩的互动式报告工具,该工具利用 BigQuery 的计算能力,将汇总的地点数据分析数据提供给数据洞察。此架构避免了尝试直观呈现海量原始数据集的陷阱,并让最终用户能够灵活地近乎实时地探索不同维度(例如时间、位置和业务类型)的数据。这是一个强大的工具,可让非技术利益相关方灵活地探索数据。

后续步骤

通过对 Places Insights 架构的不同部分进行参数化,探索动态报告的其他变体:

  • 动态竞争对手分析:为 brand 名称创建参数,让用户能够即时在不同竞争对手之间切换热图,以查看他们在市场中的相对饱和度。如需了解品牌数据的可用性,请参阅地点数据分析数据简介。
  • 互动式选址:添加 price_level(例如“中等”与“昂贵”)和最低 rating 参数,以便房地产团队能够动态过滤出符合特定人口统计特征的区域。
  • 自定义集水区:允许用户定义自定义研究区域,而不是按城市名称进行过滤。
    • 基于半径:创建三个数字参数:p_latitude、p_longitude 和 p_radius_meters。坐标可通过 Google Maps Platform API(包括 Geocoding API)获取。在查询中,将这些值注入 ST_DWITHIN 函数:
      • ST_DWITHIN(point, ST_GEOGPOINT(@p_longitude, @p_latitude), @p_radius_meters)
    • 基于多边形:对于复杂的自定义形状(例如销售区域),用户无法轻松输入几何图形文本。而应在 BigQuery 中创建一个对照表,其中包含形状几何图形和易记名称(例如“区域 A”)。在数据洞察中创建一个文本参数 p_zone_name,以便用户选择区域,并使用子查询检索 ST_CONTAINS 函数的几何图形。

贡献者