Hologres自V4.0版本开始,支持通过Object Table访问数据湖OSS中的非结构化数据及其元信息,本文为您介绍Object Table的使用语法以及示例。
介绍
在人工智能时代,非结构化数据已成为驱动技术革新与智能进化的核心燃料。相较于传统数据库中的结构化信息,非结构化数据,如文本、图像、语音、视频、社交媒体内容等以原始、多元的形态承载更加真实的行为轨迹和复杂语义。通过对非结构化数据的处理、分析,可以帮助企业构建更强的竞争优势,让数据发挥更大的价值。Object Table具备的能力如下:
-
支持通过表的形式读取OSS中非结构化数据(PDF、IMAGE、PPT等)。
-
可以结合Dynamic Table增量刷新+Embedding Function对非结构化数据加工,既能对非结构化数据Embedding存储进Hologres,无需调用外部Embedding算法,也能增量识别文件变化,从而减少重复计算,提升计算效率。
-
可以结合AI Function(如
ai_gen等)对非结构化数据推理、分类等,也可以结合向量检索、全文检索对非结构化数据双路召回,实现非结构化数据的分析和搜索能力。
通过Hologres Object Table结合AI Function等能力,数据不用出库,无需调用外部服务,就可以实现OSS上非结构化数据的全链路加工、检索、分析,在提升数据安全性的同时也能拓宽业务的数据分析范围。
使用限制
-
仅Hologres V4.0及以上版本支持该功能。
说明如果您的实例是V4.0以下版本请参见实例升级。
-
Object Table仅支持读取PDF、PPT以及图片等数据,不支持读取视频和音频。
语法
创建Object Table
-
Object Table一种专为读取非结构化数据而设计的表,因此在建表时无需指定列,Object Table有固定的列。
-
创建完Object Table后,必须执行一次刷新Object Table才会有数据。
CREATE OBJECT TABLE [IF NOT EXISTS] [schema_name.]<table_name>
WITH (
-- object table特有属性
path = '<oss_path>', --必填
oss_endpoint = '<oss_endpoint>', --必填
role_arn = '<role_arn>', --必填
-- 通用参数
[orientation = '[column | row | row,column]',]
[table_group = '[tableGroupName]',]
[distribution_key = 'columnName[,...]]',]
[clustering_key = '[columnName{:asc}] [,...]]',]
[storage_mode = '[hot | cold]',]
[event_time_column = '[columnName [,...]]',]
[bitmap_columns = '[columnName [,...]]',]
[dictionary_encoding_columns = '[columnName [,...]]',]
[time_to_live_in_seconds = '<non_negative_literal>']
);
-
基本参数说明
参数名
是否必填
描述
path
是
文件所在的OSS路径目录,Object Table会对该目录的文件进行元数据抽取。例如:
oss://bucket/dir。oss_endpoint
是
OSS的Endpoint,仅支持经典网络,每个Region的域名详情见地域和Endpoint。例如:
oss-ap-southeast-1-internal.aliyuncs.com。role_arn
是
阿里云RAM角色的ARN,例如
acs:ram::role-id:role/role-name。您可登录RAM控制台,在页面,单击目标角色名称,获取对应角色的RAM信息。 -
通过参数说明
以下参数均为非必填。
参数名
描述
默认值
orientation
Object Table存储格式,支持行存、列存、行列共存。详情请参见表存储格式:列存、行存、行列共存。
column
table_group
Object Table所在的Table Group。
default Table Group
distribution_key
object_uri
clustering_key
object_uri
storage_mode
存储模式,支持hot(热存储)和cold(冷存储)。详情请参见数据分层存储。
hot
event_time_column
分段键。详情请参见Event Time Column(Segment Key)。
last_modified_at
bitmap_columns
object_uri:auto,etag:auto
dictionary_encoding_columns
比特编码。详情请参见字典编码Dictionary Encoding。
object_uri:auto,etag:auto
time_to_live_in_seconds
表数据生命周期。
3153600000
查看Object Table
查询Object Table
Object Table创建成功后,可以像查询普通表一样对该表进行查询。
SELECT * FROM <OBJECT_TABLE_NAME>;
Object Table的字段固定,详细的字段和说明如下:
|
列名 |
类型 |
描述 |
|
object_uri |
TEXT |
映射的具体的OSS文件路径。 |
|
etag |
TEXT |
ETag在每个Object生成时创建,具备唯一性,用于识别一个具体的文件内容。 |
|
file |
FILE |
FILE为新支持的类型,其格式类似于json,用于存储详细的元数据信息,可以使用JSON函数解析。其内容包括:
|
|
metadata |
JSON |
自定义metadata。 |
查看object table的表结构
-
通过
hg_dump_script查看SELECT hg_dump_script('[<schema_name>.]<object_table_name>'); -
通过
hologres.hg_table_properties系统表查看SELECT * FROM hologres.hg_table_properties WHERE table_name = '<object_table_name>';
刷新Object Table
Object Table创建后,必须执行一次刷新才会有数据。当前仅支持手动刷新Object Table。语法如下:
REFRESH OBJECT TABLE [<schema_name>.]<table_name>;
修改Object Table
仅支持修改Object Table的表名和schema,语法如下:
--重命名表名
ALTER OBJECT TABLE [IF EXISTS] <table_name> RENAME TO <new_name>;
--修改schema
ALTER OBJECT TABLE [IF EXISTS] [<schema_name>.]<table_name> SET SCHEMA <new_schema>;
删除Object Table
--开启表回收站后,删除的object table会自动进入回收站。
DROP OBJECT TABLE [IF EXISTS] <table_name> [FORCE];
如果数据库开启了回收站,删除Object Table会进入回收站,可以使用回收命令将Object Table恢复,恢复出来仍然是Object Table,详细使用见表回收站。
最佳实践
Object Table可以结合Dynamic Table、AI Function、向量检索以及全文检索等能力,实现非结构化数据的自动加工、检索和分析。详情请参见: