DLA新增函数发布:身份证、星座、拼音、Json数组、经纬度城市查询、互联网坐标系经纬度转换等

简介: 概述 本月,Data Lake Analytics(https://et.aliyun.com/bdad/datalake)发布了一批新增的内置函数,涉及身份证地域查询、星座查询、中文拼音转换、Json数组内容字段提取、互联网坐标系经纬度转换等。

概述

本月,Data Lake Analytics(https://et.aliyun.com/bdad/datalake)发布了一批新增的内置函数,涉及身份证地域查询、星座查询、中文拼音转换、Json数组内容字段提取、经纬度城市查询、互联网坐标系经纬度转换等。在云上即可轻松利用这些函数进行分析和数据处理。

说明

1. 空值判断

输入任意类型的数值或者列对象,如果为空,返回true(1);如果不空,返回false(0)。

is_null(all_type) -> boolean

2. 中文转拼音

输入中文,输出对应的拼音,其他字符不变。

pinyin(string) -> string

示例:

select pinyin('中国');
-> zhongguo

select pinyin('中 国');
-> zhong guo

3. 生成MD5值

输入字符串,输出字符串对应的MD5值。

md5(string) -> string

示例:

select md5('中 国');
-> c939eb06bb2cf2ef5fd3375da2a6bfdd

4. 生成SHA256值

输入字符串,输出字符串对应的SHA256哈希值。

sha256(string) -> string

示例:

select sha256('中国');
-> f0e9521611bb290d7b09b8cd14a63c3fe7cbf9a2f4e0090d8238d22403d35182

5. 星座查询

输入日期,查询对应的星座的英文。

zodiac(date_string | date) -> string

输入日期,查询对应的星座中文。

zodiac_cn(date_string | date) -> string

示例:

select zodiac_cn('2019-08-22');
-> 狮子座

select zodiac_cn('2016-05-26');
-> 双子座

select zodiac('2019-08-22');
-> Leo

select zodiac('2016-05-26');
-> Gemini

6. 经纬度城市查询

根据经、纬度查询中国省、市。经纬度符合GCJ-02(https://baike.baidu.com/item/GCJ-02/1913612)标准。

  • city
city(DOUBLE, DOUBLE) -> String

从经、纬度(longitude, latitude),查询对应的城市名称(中文)。

示例:

select city(121.48, 31.22);
+----------------------------+
| city(121.48, 31.22)        |
+----------------------------+
| 上海城区                     |
+----------------------------+
  • province
province(DOUBLE, DOUBLE) -> String

从经、纬度(longitude, latitude),查询对应的省、直辖市名称(中文)。

示例:

select province(121.48, 31.22);
+----------------------------+
| province(121.48, 31.22)    |
+----------------------------+
| 上海市                      |
+----------------------------+

7. 互联网坐标系经纬度转换

7.1 当前互联网地图的坐标系现状

地球坐标 (WGS84)
  • 国际标准,从GPS 设备中取出的数据的坐标系。
  • 国际地图提供商使用的坐标系。
  • Data Lake Analytics支持的Geospatial处理函数(https://yq.aliyun.com/articles/669048)就是基于该地球坐标系,如果涉及坐标系经纬度转换,可以用本次发布的函数。
火星坐标 (GCJ-02), 也叫国测局坐标系
  • 中国标准,从国行移动设备中定位获取的坐标数据使用这个坐标系。
  • 国家规定: 国内出版的各种地图系统(包括电子形式),必须至少采用GCJ-02对地理位置进行首次加密。
百度坐标 (BD-09)
  • 百度标准,百度SDK,百度地图,Geocoding 使用。
  • 在火星坐标上来个二次加密。

7.2 开发过程需要注意的事

  • 从设备获取经纬度(GPS)坐标

    • 如果使用的是百度SDK那么可以获得百度坐标(BD-09)或者火星坐标(GCJ-02),默认是BD-09
    • 如果使用的是iOS的原生定位库,那么获得的坐标是WGS84
    • 如果使用的是高德SDK,那么获取的坐标是GCJ-02
  • 互联网在线地图使用的坐标系

    • 火星坐标系:

      • iOS 地图(其实是高德)
      • Google 地图
      • 搜搜、阿里云、高德地图
    • 百度坐标系:

      • 当然只有百度地图
    • WGS84坐标系:

      • 国际标准,谷歌国外地图、osm地图等国外的地图一般都是这个

7.3 函数说明

计算WGS84两个经纬度坐标之间的距离,单位:米。注意,lat是纬度,lng是经度,参数顺序不要搞反。

wgs_distance(double lat1, double lng1, double lat2, double lng2) -> double

示例:

select wgs_distance(28, 120, 28.1, 120.1);
-> 14830.55281889834

GCJ-02(火星坐标系)转为BD-09(百度坐标系),谷歌、高德 -> 百度。注意,lat是纬度,lng是经度,参数顺序不要搞反。

gcj_to_bd(double lat, double lng) -> json

示例:

select gcj_to_bd(120, 28);
-> {"lng":28.00667999996849,"lat":120.005957999865}

BD-09(百度坐标系)转为GCJ-02(火星坐标系),百度 -> 谷歌、高德。注意,lat是纬度,lng是经度,参数顺序不要搞反。

bd_to_gcj(double lat, double lng) -> json

示例:

select bd_to_gcj(120, 28);
-> {\"lng\":27.993435802597258,\"lat\":119.99402132293964}

WGS84(地球坐标系)转为GCJ02(火星坐标系)。注意,lat是纬度,lng是经度,参数顺序不要搞反。

wgs_to_gcj(double lat, double lng) -> json

示例:

select wgs_to_gcj(120, 28);
-> {"lng":28.0,"lat":120.0}

GCJ02(火星坐标系)转成WGS84(地球坐标系),误差在1~2米内。注意,lat是纬度,lng是经度,参数顺序不要搞反。

gcj_to_wgs(double lat, double lng) -> json

示例:

select gcj_to_wgs(120, 28);
-> {"lng":28.0,"lat":120.0}

GCJ02(火星坐标系)转成WGS84(地球坐标系),误差在0.5米内,性能比gcj_to_wgs要慢。注意,lat是纬度,lng是经度,参数顺序不要搞反。

gcj_extract_wgs(double lat, double lng) -> json

示例:

select gcj_extract_wgs(52.2, 14.32);
-> {"lng":14.32,"lat":52.2}

8. 中国身份证地域查询

查询身份证所属省份。

id_card_province(string) -> string

查询身份证所属城市。

id_card_city(string) -> string

查询身份证所属区域。

id_card_area(string) -> string

查询身份证的出身年月日,格式例如:19900101

id_card_birthday(string) -> string

查询身份证的性别。

id_card_gender(string) -> string

校验身份证格式是否合法。

is_valid_id_card(string) -> boolean

输出身份证地域信息,JSON格式。

id_card_info(string) -> json

示例:

select id_card_province('430403199001010011');
-> 湖南省

select id_card_city('430403199001010011');
-> 衡阳市

select id_card_area('430403199001010011');
-> 雁峰区

select id_card_birthday('430403199001010011');
-> 19900101

select id_card_gender('430403199001010011');
-> 男

select is_valid_id_card('430403199001010011');
-> 1

select id_card_info('430403199001010011');
-> {"area":"雁峰区","valid":true,"province":"湖南省","gender":"男","city":"衡阳市"}

9. JSON数组内容字段提取

通过JSON PATH提取数组内容字段,输出为JSON格式数组。

json_array_extract(json, jsonPath) -> array(varchar)

通过JSON PATH提取数组内容字段,输出是字段为字符串形式的数组(字段值是原始字符串值,不是JSON形式)。

json_array_extract_scalar(json, jsonPath) -> array(varchar)

示例:

select json_array_extract(arr1, '$.book.id') as a 
from (values ('[{"book":{"id":"12"}}, {"book":{"id":"14"}}]')) t(arr1);
-> ["12", "14"]

select json_array_extract_scalar(arr1, '$.book.id') as a 
from (values ('[{"book":{"id":"12"}}, {"book":{"id":"14"}}]')) t(arr1);
-> [12, 14]

Data Lake Analytics首购和流量包优惠

首购用户1元10TB,流量包阶梯折扣优惠:https://et.aliyun.com/bdad/datalake
产品详情:https://www.aliyun.com/product/datalakeanalytics
云栖社区:https://yq.aliyun.com/teams/396
知乎社区:https://zhuanlan.zhihu.com/data-lake-analytics

相关文章
|
4月前
【Azure Durable Function】PowerShell Activity 函数遇见 Newtonsoft.Json.JsonReaderException: The reader's MaxDepth of 64 has been exceeded.
【Azure Durable Function】PowerShell Activity 函数遇见 Newtonsoft.Json.JsonReaderException: The reader's MaxDepth of 64 has been exceeded.
|
4月前
|
JSON 前端开发 JavaScript
php中JSON或数组到formData的键值对转换
转换JSON或数组到formData格式的键值对并不复杂。PHP的 `json_decode()`与 `http_build_query()`是实现这一转换过程的关键函数。理解这个转换过程对于开发中处理各种AJAX请求时调整数据格式至关重要。这样,无论是处理来自客户端的JSON字符串,还是服务器端的数组数据,都能够灵活地转换为适合网络传输的格式,确保数据交换的顺畅和高效。
106 4
|
4月前
|
SQL JSON 关系型数据库
"SQL老司机大揭秘:如何在数据库中玩转数组、映射与JSON,解锁数据处理的无限可能,一场数据与技术的激情碰撞!"
【8月更文挑战第21天】SQL作为数据库语言,其能力不断进化,尤其是在处理复杂数据类型如数组、映射及JSON方面。例如,PostgreSQL自8.2版起支持数组类型,并提供`unnest()`和`array_agg()`等函数用于数组的操作。对于映射类型,虽然SQL标准未直接支持,但通过JSON数据类型间接实现了键值对的存储与查询。如在PostgreSQL中创建含JSONB类型的表,并使用`->>`提取特定字段或`@>`进行复杂条件筛选。掌握这些技巧对于高效管理现代数据至关重要,并预示着SQL在未来数据处理领域将持续扮演核心角色。
66 0
|
4月前
|
JSON JavaScript 数据格式
Jquery 将 JSON 列表的 某个属性值,添加到数组中,并判断一个值,在不在数据中
Jquery 将 JSON 列表的 某个属性值,添加到数组中,并判断一个值,在不在数据中
85 0
|
6月前
|
JSON 关系型数据库 数据库
PostgreSQL中json_to_record函数的神秘面纱
`json_to_record`是PostgreSQL中的函数,用于将JSON数据转换为RECORD类型,便于查询和分析。基本用法是传入JSON数据,如`SELECT json_to_record('{"name": "张三", "age": 30}'::json);`。还可结合FUNCTION创建自定义函数,实现复杂功能。在实际应用中,它简化了对JSON格式数据的处理,例如筛选年龄大于30的用户。了解并善用此函数能提升数据库操作效率。本文由木头左分享,期待你的点赞和收藏,下次见!
PostgreSQL中json_to_record函数的神秘面纱
|
6月前
|
JSON 关系型数据库 MySQL
MySQL中GROUP_CONCAT与JSON_OBJECT、GROUP BY的巧妙结合:打造高效JSON数组汇总
MySQL中GROUP_CONCAT与JSON_OBJECT、GROUP BY的巧妙结合:打造高效JSON数组汇总
191 1
|
5月前
|
JSON 数据格式
OkHttp json rpc 查询ETH余额
OkHttp json rpc 查询ETH余额
|
6月前
|
JSON 资源调度 Kubernetes
实时计算 Flink版操作报错合集之解析JSON数组时,遇到报错,该怎么解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
6月前
|
JSON JavaScript 数据格式
1.js动态的往json数据添加新属性和值 2.JSON 和 JS 对象互转 3.对象转化为数组
1.js动态的往json数据添加新属性和值 2.JSON 和 JS 对象互转 3.对象转化为数组
57 0
|
7月前
|
SQL JSON 监控
实时计算 Flink版产品使用合集之直接将 JSON 字符串解析为数组的内置函数如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。