Skip to content

Commit

Permalink
添加多个地理相关函数
Browse files Browse the repository at this point in the history
  • Loading branch information
leovan committed Feb 12, 2024
1 parent 0659159 commit 6333f24
Show file tree
Hide file tree
Showing 27 changed files with 894 additions and 278 deletions.
23 changes: 13 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Hive 函数 <img src="docs/images/hive-functions-icon.png" align="right" alt="logo" height="100" style="border: none; float: right;">
# Hive 函数 <img src="https://raw.githubusercontent.com/leovan/hive-functions/main/docs/images/hive-functions-icon.png" align="right" alt="logo" height="100" style="border: none; float: right; height: 100px;">

![License](https://img.shields.io/github/license/leovan/hive-functions.svg)
![Issues](https://img.shields.io/github/issues/leovan/hive-functions.svg)
Expand All @@ -15,18 +15,21 @@
| 序号 | 分类 | 函数 | 说明 |
| :--- | :------- | :--------------------------- | :----------------------------------------------------------- |
| 1 | 日期时间 | `DATETIME_INTERVAL_RELATION` | 计算两个日期时间区间的关系 |
| 3 | 地理 | `GREAT_CIRCLE_DISTANCE` | 计算两个坐标之间的距离 |
| 2 | 地理 | `COORDINATE_SYSTEM_CONVERT` | 根据给定的经纬度以及转换前后坐标系计算转换后坐标系的经纬度 |
| 3 | 地理 | `GEOHASH_DECODE` | 根据 Geohash 计算中心点纬度、中心点经度、边界纬度最小值、边界纬度最大值、边界经度最小值、边界经度最大值 |
| 4 | 地理 | `GEOHASH_ENCODE` | 根据给定的经纬度计算指定精度的 Geohash |
| 5 | 地理 | `GEOHASH_DECODE` | 根据 Geohash 计算中心点纬度、中心点经度、边界纬度最小值、边界纬度最大值、边界经度最小值、边界经度最大值 |
| 6 | 地理 | `COORDINATE_SYSTEM_CONVERT` | 根据给定的经纬度以及转换前后坐标系计算转换后坐标系的经纬度 |
| 7 | JSON | `TO_JSON` | 将 Hive 结构(例如:`LIST``MAP``NAMED_STRUCT` 等)转换成为 JSON |
| 8 | JSON | `EXTRACT_JSON` | 根据 JSON PATH 提取 JSON 中对应的值 |
| 9 | 网络 | `FORMAT_MAC_ADDRESS` | 格式化 MAC 地址 |
| 10 | 网络 | `FORMAT_IP_ADDRESS` | 格式化 IP 地址 |
| 11 | 文本 | `BLANK_TO_NULL` | 将空字符串转换为 NULL |
| 5 | 地理 | `GREAT_CIRCLE_DISTANCE` | 计算两个坐标之间的距离 |
| 6 | 地理 | `POLYGON_AREA` | 计算多边形面积 |
| 7 | 地理 | `POLYGON_GEOHASH` | 计算覆盖多边形的 Geohash 列表 |
| 8 | 地理 | `SPATIAL_RELATION` | 计算两个地理区域的空间关系 |
| 9 | JSON | `EXTRACT_JSON` | 根据 JSON PATH 提取 JSON 中对应的值 |
| 10 | JSON | `TO_JSON` | 将 Hive 结构(例如:`LIST``MAP``NAMED_STRUCT` 等)转换成为 JSON |
| 11 | 网络 | `FORMAT_IP_ADDRESS` | 格式化 IP 地址 |
| 12 | 网络 | `FORMAT_MAC_ADDRESS` | 格式化 MAC 地址 |
| 13 | 文本 | `BLANK_TO_NULL` | 将空字符串转换为 NULL |

## 许可

The MIT License (MIT)

Copyright (c) 2021-2023 Leo Van
版权所有 &copy; 2021-2024,<a href="https://leovan.me" target="_blank">范叶亮 | Leo Van</a>
31 changes: 26 additions & 5 deletions docs/datetime-functions.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,17 @@ AS

#### 参数

- FIRST_START_DATETIME(必选):`STRING` 类型,第一个开始日期时间,格式为 `yyyy-MM-dd HH:mm:ss`
- FIRST_END_DATETIME(必选):`STRING` 类型,第一个结束日期时间,格式为 `yyyy-MM-dd HH:mm:ss`
- SECOND_START_DATETIME(必选):`STRING` 类型,第二个开始日期时间,格式为 `yyyy-MM-dd HH:mm:ss`
- SECOND_END_DATETIME(必选):`STRING` 类型,第二个结束日期时间,格式为 `yyyy-MM-dd HH:mm:ss`
- FIRST_START_DATETIME(必选):`STRING` 类型,第一个开始日期时间
- FIRST_END_DATETIME(必选):`STRING` 类型,第一个结束日期时间
- SECOND_START_DATETIME(必选):`STRING` 类型,第二个开始日期时间
- SECOND_END_DATETIME(必选):`STRING` 类型,第二个结束日期时间
- DATETIME_FORMAT(可选):`STRING` 类型,日期时间格式,默认为 `yyyy-MM-dd HH:mm:ss`

#### 返回值

日期时间区间关系名称:`STRING` 类型

可能得返回值包括`Precedes``PrecededBy``Meets``MetBy``Overlaps``OverlappedBy``Starts``Finishes``StartedBy``FinishedBy``During``Contains``Equals``FormatError``ValueError`
可能的返回值包括`Precedes``PrecededBy``Meets``MetBy``Overlaps``OverlappedBy``Starts``Finishes``StartedBy``FinishedBy``During``Contains``Equals``FormatError``ValueError`

当参数的格式错误时,例如:`1970/01/01 00:00:00`,返回 `FormatError`

Expand Down Expand Up @@ -94,3 +95,23 @@ SELECT
```txt
Precedes
```

SQL:

```sql
SELECT
DATETIME_INTERVAL_RELATION(
'1990/01/01 00:00:00',
'1990/01/02 00:00:00',
'1990/01/03 00:00:00',
'1990/01/04 00:00:00',
'yyyy/MM/dd HH:mm:ss'
)
;
```

输出结果为:

```txt
Precedes
```
Loading

0 comments on commit 6333f24

Please sign in to comment.