maxcompute使用篇

ops/2024/11/14 12:26:19/

文章目录

  • maxcompute使用篇
    • 1.mongoDB与maxcompute 进行数据同步
      • 1.1 基本类型的数据
      • 1.2部分复杂类型的数据
    • 2.maxcompute中复杂数据类型解析
        • 2.1 get_json_object
        • 2.2 json_tuple
        • 2.3 处理json几种失效的情况:
        • 2.4 STR_TO_MAP、MAP_KEYS
        • 2.5 regexp_replace
        • 2.6 FROM_JSON
        • 2.7 nvl
        • 2.8 trim

maxcompute使用篇

1.mongoDB与maxcompute 进行数据同步

1.1 基本类型的数据

  • 基本数据类型会根据同步任务配置的读取字段中的name自动读取对应path下的数据,并根据数据类型做自动转换,您无需指定column的type属性,如下图_id,uuid,key_name等普通类型可以根据配置的类型属性进行自动转换

image-20240917210619222

1.2部分复杂类型的数据

  • 需要通过配置column的type属性,进行自定义处理,如shop_list以key_info字段

    注意:

    1.在mongoDB和maxcompute进行数据同步时,如果mongoDB某个字段(如:key_info) 数据类型为Document,在mongoDB侧没有配置对应的Document类型的话,则直接将Document转 JSON 序列化处理

    2.如果mongoDB某个字段(如:shop_list) 数据类型为Array,在mongoDB侧没有配置对应的Array类型的话,则会将Array转成Document类型数据,无法进行处理

    3.有关MongoDB Reader支持的MongoDB数据类型详情,请查看该链接:https://help.aliyun.com/zh/dataworks/user-guide/mongodb-data-source?spm=a1z3jh.13523495.0.0.27af6242XNV15M

Array数据类型:

image-20240917210740048

Document数据类型:

image-20240917210813485

maxcompute侧配置:

image-20240917211050059

2.maxcompute中复杂数据类型解析

2.1 get_json_object
  • 概述:从 JSON 字符串中提取特定字段值的函数,接受一个 JSON 字符串和一个路径表达式作为参数,返回一个字符串类型的值,表示指定路径的 JSON 字段值。如果路径不存在,返回NULL

  • 语法 : get_json_object(json_column, ‘$.name’)

  • 注意:一次只能解析一个json字段,可以嵌套解析多层json

    image-20240917211253071

2.2 json_tuple
  • 概述:通过列名来指定要提取的字段,相对来说更加直观。在同时提取多个字段时,代码的可读性更好。如果路径不存在,返回NULL

  • 语法 : json_tuple(json_data, ‘name’, ‘age’)

  • 注意:

    1.每次能够同时解析多个字段,不能解析嵌套的json,如果需要解析嵌套的,那么只能一层层解析

    2.json_tuple如果需要给解析的多个json字段起别名,需要结合侧视图一起使用

    image-20240917211521769

2.3 处理json几种失效的情况:
(1)json格式不对,输入的字符串根本不是有效的 JSON 格式。例如,字符串存在语法错误、缺失关键的括号或引号等。
(2)提供的路径表达式错误。路径表达式用于指定要从 JSON 中提取的部分,如果表达式不正确,无法准确定位到目标数据。
(3)数据类型不匹配。例如,期望提取的是一个字符串,但实际是一个数字或对象。
(4)嵌套层次过深。如果 JSON 数据的嵌套层次非常复杂,可能超出了 get_json_object 函数的处理能力或导致性能问题。
(5)处理超大的 JSON 数据。当 JSON 数据过大,可能会导致内存不足或处理超时的情况。
2.4 STR_TO_MAP、MAP_KEYS
  • STR_TO_MAP:

    • 概述:用于将一个字符串转换为映射(map)类型
    • 语法:STR_TO_MAP(map_string_column, ‘,’, ‘:’) ,分隔键值对的分隔符是',',分隔键和值的分隔符是':'
  • MAP_KEYS

    • 概述:获取映射(map)类型数据的所有键组成的数组
    • 语法:MAP_KEYS(map_column)
  • 补充:结构体(struct)和映射(map)之间的区别

    • STRUCT<name:STRING, age:INT, grade:STRING>
    • MAP<STRING,STRING>

    image-20240917211626829

2.5 regexp_replace
  • 概述:用于使用正则表达式进行字符串替换
  • 语法 : regexp_replace(string, pattern, replacement)
    • string:要进行替换操作的原始字符串。
    • pattern:正则表达式模式,用于匹配要被替换的部分。
    • replacement:用于替换匹配部分的新字符串

image-20240917211708767

2.6 FROM_JSON
  • 概述:用于将 JSON 字符串解析为特定数据结构(如结构体、数组等)的函数,常与炸裂函数一起使用
  • 语法 : from_json(list_ids,‘array’)
    • array : 转换的数据类型
    • STRING : 数组里面的数据类型

image-20240917211756568

2.7 nvl
  • 概述:nvl函数用于处理空值(注意:在maxcompute中没有ifnull函数)
  • 语法 : nvl(expr1, expr2)
    • expr1:要检查是否为 NULL 的表达式。
    • expr2:如果expr1为 NULL,则返回这个表达式的值
  • 注意事项
    • nvl函数只能处理一个空值情况,如果需要处理多个不同类型的空值,可以结合其他函数或逻辑来实现
    • 确保替换值的类型与要处理的列的类型兼容,否则可能会导致类型转换错误
2.8 trim
  • 概述:用于去除字符串两端的特定字符

  • 语法 : trim([leading|trailing|both] [characters] FROM string)

    • leading:表示去除字符串开头的字符,默认是去除两端的字符。
    • trailing:表示去除字符串末尾的字符
    • both:表示去除字符串两端的字符,这是默认行为
    • characters:要去除的字符集,如果不指定,则默认去除空格
    • string:要进行处理的字符串
    • trim(string):默认去除字符串两端的空格

    image-20240917211818049


http://www.ppmy.cn/ops/113268.html

相关文章

分布式中间件-Pika一个高效的分布式缓存组件

文章目录 Pika简介Pika特性Pika解决的问题及应用场景Pika架构之存储引擎部署模式1、主从模式2、分布式集群模式 Pika快速上手1、二进制包方式2、源码编译方式2.1 支持的平台2.2 依赖的库软件2.3 编译过程2.4 启动 Pika2.5 清空已编译的结果2.6 Pika 的开发调试 3、容器化3.1 使…

幂函数的积分型函数

数学上&#xff0c;把形如的函数称为幂函数。幂函数的规律在博文[1]中已作说明。简单地说&#xff0c;前提下&#xff0c;当时幂函数下凸递增&#xff0c;时线性递增&#xff0c;时上凸递增&#xff0c;时为常值函数&#xff0c;时递减&#xff0c;与坐标系的轴和轴的正方向无限…

clip论文阅读(Learning Transferable Visual Models From Natural Language Supervision)

目录 摘要训练pre-train model的过程将pre-train model应用于下游任务应用&#xff08;待更新&#xff09; 论文/项目地址&#xff1a;https://github.com/OpenAI/CLIP 提供了clip的pre-trained model的权重&#xff0c;也可安装使用pre-trained model 摘要 使用标签标注的图…

linux-网络管理-网络配置

Linux 网络管理与网络配置 在Linux系统中&#xff0c;网络管理是系统管理员的重要职责之一。网络配置包括如何配置网络接口、管理IP地址、网关、DNS等核心网络设置。现代Linux系统提供了多种工具用于网络管理&#xff0c;既包括传统的命令行工具&#xff0c;也包括现代的网络管…

c#将int转为中文数字

public static string IntegerToCN(int value){string[] numberStrs { "零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十" };if (value &l…

交安安全员考试真题及答案

交安安全员考试真题及答案 56.依据《安全生产违法行为行政处罚办法》&#xff0c;违法事实确凿并有法定依据,对个人(  )罚款、对生产经营单位处以&#xff08;&#xff09;罚款或者警告行政处罚的&#xff0c;安全生产行政执法人员可以当场作出行政处罚决定。 A.50元以上;1…

C++20 模块化(Modules)

C20 引入的模块化&#xff08;Modules&#xff09;是一个重大改进&#xff0c;旨在取代传统的头文件机制&#xff0c;提高编译速度、代码可维护性以及项目的可扩展性。模块化为 C 提供了一种更现代化的代码组织方式&#xff0c;避免了头文件中常见的宏污染、重复编译和复杂的依…

云手机的海外原生IP有什么用?

在全球数字化进程不断加快的背景下&#xff0c;企业对网络的依赖程度日益加深。云手机作为一项创新的工具&#xff0c;正逐步成为企业优化网络结构和全球业务拓展的必备。尤其是云手机所具备的海外原生IP功能&#xff0c;为企业进入国际市场提供了独特的竞争优势。 什么是海外原…