首页 > 其他分享 >maxcompute使用篇

maxcompute使用篇

时间:2024-09-18 17:22:05浏览次数:12  
标签:MAP maxcompute 数据类型 JSON json 使用 字符串

文章目录

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

标签:MAP,maxcompute,数据类型,JSON,json,使用,字符串
From: https://blog.csdn.net/m0_63593025/article/details/142319082

相关文章

  • C#——LINQ to XML(使用 Descendants 方法查找单个子代)
    xml位于命名空间中时查找staticvoidMain(string[]args){XElementroot=XElement.Parse(@"<aw:Rootxmlns:aw='http://www.efun.com'><aw:Child1><aw:GrandChild1>GC1Value</aw:GrandChild1>&l......
  • GaussDB使用指导
    前提条件连接数据库时使用的用户需要具备访问数据库的权限。gsql须与数据库版本配套。背景信息使用gsql命令可以连接本机的数据库服务,也可以连接远程数据库服务。连接远程数据库服务时,需要在服务器上设置允许远程连接,详细操作请参见《开发者指南》中“数据库使用入门>连接数......
  • 开源多场景问答社区论坛Apache Answer本地部署并发布至公网使用
    ......
  • 使用call、apply和bind改变函数执行时的上下文
    使用call、apply和bind都能够是函数的上下文发生改变,那我们来具体看看这记者之间的区别吧。call方法:语法:call([thisObj[,arg1[,arg2[,  [,.argN]]]]])定义:调用一个对象的一个方法,以另一个对象替换当前对象。说明:call方法可以用来代替另一个对象调用一个方法。call方法......
  • 我在使用C语言编程的时候可以完全了解内存中数据的情况,每一个字节每一个比特都能了如
    在Rust中,虽然编译器默认会帮助你管理内存,提供安全的抽象,但你仍然可以像在C语言中一样,完全掌控每个字节、每个位的操作。Rust提供了多种方式来实现对内存的精细控制,只是默认情况下这些操作受到更多的安全检查和限制。以下是一些方法,帮助你在Rust中实现对内存的精确控制:1.......
  • 【北京迅为】iTOP-LS2K0500开发板快速使用编译环境ubuntu20.04第一章加载迅为提供 Ubu
    iTOP-LS2K0500开发板从CPU自主指令系统到开发板每一个元器件,做到100%全国产化。        【公众号】迅为电子,了解更多资讯-----------------------  第一章 加载迅为提供 Ubuntu20.041.1安装虚拟机VMware软件这里我们使用的是VMware15.5版本,当然其他版本也是可以,比如......
  • EF使用
    EF命令使用问题描述:PM>Add-MigrationInitialCreateAdd-Migration:无法将“Add-Migration”项识别为cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。所在位置行:1字符:1+Add-MigrationInitialCreate+~......
  • PyQt5 使用 QStackedWidget 实现轮播展示动画(自动与手动)
    PyQt5使用QStackedWidget实现轮播展示动画(自动与手动)在PyQt5中,如果需要用QStackedWidget展示图片比较生硬,参考网络上的一些内容,发现用QPropertyAnimation属性动画可实现想要的效果,于是记录在这里代码结构本文中全部代码全在test_QStackedWidget_Animation.py这一个文件中......
  • 强制卸载工具 Revo Uninstaller Pro 下载及使用说明
    RevoUninstallerPro是一款极为强大好用的专业级软件彻底卸载工具,可在卸载软件同时更彻底有效地清除与之相关的垃圾、临时文件和注册表键值;还能强制卸载那些正常卸载出错误的软件,也能通过监视软件安装过程来记录下系统更改之处,从而实现最干净的卸载。该版本已授权,可以使用全......
  • 【北京迅为】iTOP-LS2K0500开发板快速使用编译环境ubuntu20.04第一章加载迅为提供 Ubu
      iTOP-LS2K0500开发板从CPU自主指令系统到开发板每一个元器件,做到100%全国产化。        【公众号】迅为电子,了解更多资讯-----------------------  第一章加载迅为提供Ubuntu20.041.1安装虚拟机VMware软件这里我们使用的是VMware15.5版本,当然......