适用于: Databricks SQL
Databricks Runtime
H3 是一个全局网格索引系统。 网格系统使用形状(如矩形或三角形)对表面进行细化,在本例中为地球表面。 H3 系统设计为使用六边形(和几个五边形),在其层次结构中提供 16 个级别的分辨率。 分辨率越高,分割的形状越小。
H3 表达式仅在已启用 Photon 的群集和 Databricks SQL 仓库(Databricks SQL 专业层)中受支持。
另请参阅:
H3 支持用于处理和分析空间数据的常见模式。 首先,将地理空间数据从标准格式(纬度和经度、已知文本(WKT)、已知二进制(WKB)或 GeoJSON 索引到 H3 单元格 ID。 使用单个数据集,你可以按单元格 ID 聚合来回答位置驱动型问题。 使用多个索引数据集,你可以使用单元格 ID 将它们组合在一起,从而揭示不同数据集彼此之间的关系。 数据集的这种联接在语义上是空间联接,但不需要空间谓词。
利用 Delta Lake 功能对 H3 索引数据进行高效存储和布局。 使用 Z 排序(在 H3 单元格 ID 上)Delta Lake 的 优化操作 可以将数据空间定位在一起。 此外,Delta Lake 的数据跳过技术使用数据共址智能地减少需要读取的数据量。
你可以灵活地处理数据。 可以选择使用已存储为大整数或字符串的 H3 单元格 ID。 为了在使用 H3 单元格 ID 时获得最佳性能,请使用大整数表示形式。 有关 H3 表达式的详细用法,请参阅 SQL 参考指南。
备注
无需安装 H3 库。 从 Databricks Runtime 11.2 开始,它作为一个可见依赖项包含在 Databricks Runtime 中(使用 3.7.0 版 H3 Java 库)。
Databricks SQL 和 Spark SQL 无需导入。
若要在笔记本中导入适用于 Python 或 Scala 的 H3 函数,请使用以下命令:
from pyspark.databricks.sql import functions as dbf
import com.databricks.sql.functions._
功能 | DESCRIPTION |
---|---|
h3_coverash3(geographyExpr,resolutionExpr) | 返回 H3 单元格 ID(表示为 BIGINT)的 ARRAY,这些 ID 对应于具有指定分辨率的最小六边形或五边形集,完全覆盖输入线性或区域地理位置。 |
h3_coverash3string(geographyExpr,resolutionExpr) | 返回一个 ARRAY,其中包含表示为 STRING 的 H3 单元格 ID,这些 ID 对应于具有指定分辨率的最小六边形或五边形集合,完全覆盖输入的线性或区域地理位置。 |
h3_longlatash3(longitudeExpr、latitudeExpr、resolutionExpr) | 返回对应于指定分辨率下提供的经纬度的 H3 单元格 ID(表示为 BIGINT)。 |
h3_longlatash3string(longitudeExpr、latitudeExpr、resolutionExpr) | 返回对应于指定分辨率下提供的经纬度的 H3 单元格 ID(表示为十六进制 STRING)。 |
h3_pointash3(geographyExpr,resolutionExpr) | 返回对应于指定分辨率下给定点的 H3 单元格 ID(以 BIGINT 表示)。 |
h3_pointash3string(geographyExpr,resolutionExpr) | 返回对应于指定分辨率下提供的点的 H3 单元格 ID(表示为 STRING)。 |
h3_polyfillash3(geographyExpr,resolutionExpr) | 返回 H3 单元格 ID(表示为 BIGINT)的 ARRAY,这些 ID 对应于具有指定分辨率的六边形或五边形,它们均包含在输入区域地理位置中。 |
h3_polyfillash3string(geographyExpr,resolutionExpr) | 返回 H3 单元格 ID(表示为 STRING)的 ARRAY,这些 ID 对应于具有指定分辨率的六边形或五边形,它们均包含在输入区域地理位置中。 |
h3_tessellateaswkb(geographyExpr,resolutionExpr) | 使用指定分辨率的 H3 单元格返回输入地理的分割。 |
h3_try_coverash3(geographyExpr, resolutionExpr) | 返回一个由 H3 单元格 ID(以 BIGINT 表示)组成的数组,代表对应指定分辨率的最小六边形或五角形集,该集合完全覆盖输入的线性或区域地理。如果第一个参数无效,则返回 NULL。 |
h3_try_coverash3string(geographyExpr, resolutionExpr) | 返回一个 H3 单元格 ID 数组(表示为 STRING),对应于指定分辨率的最小六边形或五角形集,该数组完全覆盖输入线性或异地地理,如果第一个参数无效,则返回 NULL。 |
h3_try_polyfillash3(geographyExpr、resolutionExpr) | 返回 H3 单元格 ID(表示为 BIGINT)的 ARRAY,这些 ID 对应于具有指定分辨率的六边形或五边形,它们均包含在输入区域地理位置中。 |
h3_try_polyfillash3string(geographyExpr、resolutionExpr) | 返回 H3 单元格 ID(表示为 STRING)的 ARRAY,这些 ID 对应于具有指定分辨率的六边形或五边形,它们均包含在输入区域地理位置中。 |
h3_try_tessellateaswkb(geographyExpr、resolutionExpr) | 返回使用指定分辨率的 H3 单元格对输入地理位置进行的分割;如果第一个参数无效或函数无法计算分割,则返回 NULL。 |
功能 | DESCRIPTION |
---|---|
h3_boundaryasgeojson(h3CellIdExpr) | 以 GeoJSON 格式返回输入 H3 单元格的多边形边界。 |
h3_boundaryaswkb(h3CellIdExpr) | 以 WKB 格式返回输入 H3 单元格的多边形边界。 |
h3_boundaryaswkt(h3CellIdExpr) | 以 WKT 格式返回输入 H3 单元格的多边形边界。 |
h3_centerasgeojson(h3CellIdExpr) | 以 GeoJSON 格式返回输入 H3 单元格的中心点。 |
h3_centeraswkb(h3CellIdExpr) | 返回输入 H3 单元格的中心点,并以 WKB 格式表示。 |
h3_centeraswkt(h3CellIdExpr) | 以 WKT 格式返回输入 H3 单元格的中心点。 |
功能 | DESCRIPTION |
---|---|
h3_h3tostring(h3CellIdExpr) | 将输入 H3 单元格 ID 转换为其等效的十六进制字符串表示形式。 |
h3_stringtoh3(h3CellIdStringExpr) | 将输入字符串(预期为表示 H3 单元格 ID 的十六进制字符串)转换为 H3 单元格 ID 的对应 BIGINT 表示形式。 |
功能 | DESCRIPTION |
---|---|
h3_ischildof(h3CellId1Expr、h3CellId2Expr) | 如果第一个 H3 单元格 ID 与第二个 H3 单元格 ID 相同或者是第二个 H3 单元格 ID 的子级,则返回 true。 |
h3_ispentagon(h3CellIdExpr) | 输入 BIGINT 或十六进制 STRING 是否对应于五边形 H3 单元格,如果是则返回 true,否则返回 false。 |
功能 | DESCRIPTION |
---|---|
h3_isvalid(expr) | 如果输入 BIGINT 或 STRING 是有效的 H3 单元 ID,则返回 true。 |
h3_try_validate(h3CellIdExpr) | 如果输入值对应于有效的 H3 单元格 ID,则返回 BIGINT 或 STRING 类型的输入值,否则返回 NULL。 |
h3_validate(h3CellIdExpr) | 如果输入值对应于有效的 H3 单元格 ID,则返回 BIGINT 或 STRING 类型的输入值,否则发出错误。 |
功能 | DESCRIPTION |
---|---|
h3_distance(h3CellId1Expr、h3CellId2Expr) | 返回两个输入 H3 单元格 ID 的网格距离。 |
h3_hexring(h3CellIdExpr、 kExpr) | 返回一个 H3 单元格 ID 数组,这些 ID 形成一个以原点 H3 单元格为中心的空心六边形环,与原点 H3 单元格的网格距离为 k 。 |
h3_kring(h3CellIdExpr、 kExpr) | 返回距原点单元格 ID k 个(网格)距离的 H3 单元格 ID。 |
h3_kringdistances(h3CellIdExpr、 kExpr) | 返回距原点 H3 单元格 ID k 个网格距离的所有 H3 单元格 ID(表示为长整型或字符串),以及它们到原点 H3 单元格 ID 的距离。 |
h3_try_distance(h3CellId1Expr、h3CellId2Expr) | 返回相同分辨率的两个输入 H3 单元格 ID 的网格距离,如果距离未定义,则返回 NULL。 |
功能 | DESCRIPTION |
---|---|
h3_maxchild(h3CellIdExpr, resolutionExpr) | 以指定的分辨率返回输入 H3 单元格的最大值的子项。 |
h3_minchild(h3CellIdExpr,resolutionExpr) | 以指定的分辨率返回输入 H3 单元格的最小值的子项。 |
h3_resolution(h3CellIdExpr) | 返回输入 H3 单元格 ID 的分辨率。 |
h3_tochildren(h3CellIdExpr, resolutionExpr) | 返回指定分辨率下输入 H3 单元格 ID 的子 H3 单元格 ID 的数组。 |
h3_toparent(h3CellIdExpr, resolutionExpr) | 返回指定分辨率下输入 H3 单元格 ID 的父 H3 单元格 ID。 |
功能 | DESCRIPTION |
---|---|
h3_compact(h3CellIdsExpr) | 尽可能以最佳方式压缩 H3 单元格 ID 的输入集。 |
h3_uncompact(h3CellIdsExpr,resolutionExpr) | 将 H3 单元格 ID 的输入集解压缩为指定的分辨率。 |