《阿里云产品四月刊》—Ganos H3 地理网格能力解析与最佳实践(2)https://developer.aliyun.com/article/1554159
数据导入
在使用 Ganos H3 前,需要先创建 GeomGrid 扩展,SQL 如下: CREATE EXTENSION Ganos_GeomGrid CASCADE;
GeomGrid 中提供了 h3grid 字段类型,用于表示 H3 编码。下面的 SQL 语句创建了一个带有 h3grid 类型的数据表 FOIL2013,这里字段 h3_lev13 代表我们使用的是第 13 层级的 H3 编码。H3 不同层级网格具有不同分辨率,用户可以可以更具具体业务需求灵活定义。H3 各个层级对应的空间分辨率请参考
-- 创建表用来保存 foil 点数据,h3_lev13 代表 13 级编码 CREATE TABLE FOIL2013 ( id text, lon float, lat float, h3_lev13 h3grid);
FOIL 文件是以 csv 文件格式保存的。用户可以通过编程方式从 CSV 中提取相关信息通过 SQL 入库,也可以通过 FDW 方式入库,这里我们使用 Ganos FDW 模块通过 FDW 方式实现数据快速入库。
首先我们把目标文件上传到 oss 指定目录,比如这里我们文件路径为:
endpoint:oss-cn-hangzhou-internal.aliyuncs.com bucket:dla-ganos-hz path:FOIL/trip_data_1.csv
首先我们创建 Ganos FDW 扩展
CREATE EXTENSION ganos_fdw CASCADE;
然后我们需要创建一个 csvserver,负责管理 csv 文件,ak_id 和 ak_secret 就是用户的 OSS 连接 AK 的 id 和 secret 信息,format 为'CSV'代表管理的数据格式为 CSV。
CREATE SERVER csvserver FOREIGN DATA WRAPPER ganos_fdw OPTIONS ( datasource 'OSS://<ak_id>@oss-cn-hangzhou-internal.aliyuncs.com/dla-ganos-hz/FO IL/trip_data_1.csv', format 'CSV' ); CREATE USER MAPPING FOR CURRENT_USER SERVER csvserver OPTIONS (user '<ak_id>', password '<ak_secret>');
FDW 服务创建成功后,我们就可以通过外表的形式,将 OSS 上的 csv 映射到数据库中作为一个普通表进行查询, 详细 SQL 语句如下。这里我们只选择 medallion 、pickup_longitude、pickup_latitude 三列数据,映射的外表名称为 trip_data_1:
CREATE FOREIGN TABLE trip data 1 ( medallion varchar, pickup longitude varchar, pickup latitude varchar) SERVER csvserver OPTIONS ( layer 'trip data 1' );
查询外表 trip_data_1:
SELECT * FROM trip_data_1;
《阿里云产品四月刊》—Ganos H3 地理网格能力解析与最佳实践(4)https://developer.aliyun.com/article/1554157