表

使用表定义数据的结构。

可以将新数据加载到表中,也可以引用现有位置中的数据。您可以通过创建表权限来定义对表的细粒度访问控制权限。有关更多信息,请参阅表权限。

要共享表,请参见 Share Data 。

表可以是管理表,也可以是外部表。

受管表

托管表为存储在 AI Data Platform 中的数据定义结构,并且只能由 AI Data Platform 用户访问。

删除托管表时,将删除表定义和表数据。

外部表

外部表为存储在不受 Oracle AI Data Platform 管理的位置中的数据定义结构。在 AI Data Platform 中创建外部表时,元数据生命周期由 AI Data Platform 管理。删除外部表时,仅会删除表定义。外部表参考的数据不会被删除。

确保您的用户具有创建外部表所需的以下 IAM 策略:

allow group <GroupName> to read buckets in compartment id <external-data-CompartmentId>
allow group <GroupName> to inspect objects in compartment id <external-data-CompartmentId>

外部表需要其他 IAM 策略。有关详细信息,请参阅 Oracle AI Data Platform 的 IAM 策略。

支持的表格式

表可以使用基于文件的格式,例如 CSV、JSON、Avro、Parquet 和 ORC,或者使用 Delta 和 Apache Iceberg 等事务处理表格式。Iceberg 表使用 Hadoop 目录实施来管理 Oracle Cloud Infrastructure Object Storage 中的表元数据。

格式化 说明 用途
逗号分隔值 (CSV) 数据存储为文本文件,该文件具有指定的基于行的文件格式,用于构建数据。通常,文件中的第一行是包含数据列名的标题行。 用于在系统之间交换表格式数据。文件中的每一行都是表中的一行。
JavaScript 对象表示法 (JSON) 数据以基于文本的标准格式存储,用于表示基于 JavaScript 对象语法的结构化数据。JSON 支持对象或分层结构的列表。 用于流应用程序。JSON 简化了将复杂关系存储在单个文档中的相关数据的存储,并避免了混沌列表转换为关系数据模型。请注意,JSON 不可拆分。
Avro 数据以基于行的二进制格式存储,而模式以 JSON 格式存储,以最大限度地减小文件大小并提高效率。Avro 通过管理添加、缺失和更改的字段,为模式进化提供了可靠的支持。这使得旧软件可以读取新数据,而新软件可以读取旧数据。也称为数据序列化系统。 用于数据存储,因为 Avro 文件可拆分且可压缩。基于行的序列化存储非常适合大量写入事务,例如将数据插入 AI 数据平台。当模式演化在高速写入期间至关重要时,Avro 也是一个不错的选择。
Parquet 数据以列式数据格式存储,具有高度可压缩性和可拆分性。Parquet 针对范式 "Write Once Read Many (WORM)" 进行了优化。它的写入速度很慢,但读取速度非常快,特别是当您仅访问部分列时。 用于解决大数据问题,因为压缩算法可以更好地处理列式数据格式。您可以以各种格式存储大数据,例如图像、视频、文档和结构化数据表。对于读取部分数据时繁重的工作负载,Parquet 是一个不错的选择。例如,当数据集具有多个列,但您仅希望访问部分列。如果您依赖 Spark 或者希望多个服务访问对象存储中存储的相同数据,则更理想。
优化行列 (ORC) 数据以列格式存储在单个文件中的行集合中。 用于跨群集并行处理行集合。当读取事务多于写入事务或压缩为优先级时是理想选择。
Delta 湖 数据以列格式存储,该格式使用基于 JSON 文件的事务处理日志扩展 Parquet 数据文件,以用于 ACID 事务处理和可伸缩元数据处理。 用于事务处理支持。
Iceberg 一种开放表格式,用于通过版本化的元数据、清单和快照管理 Parquet 数据文件。AI Data Platform 使用 Iceberg Hadoop 目录实施。 用于 ACID 事务、并发读取和写入、模式和分区演化、时间旅行查询、行级别更新、更新和快照管理。

支持的数据类型

数据类型 说明
字节类型 表示 1 字节带符号的整数。数字的范围是从 -128 到 127。
短类型 表示 2 字节带符号的整数。数字的范围是从 -32768 到 32767。
整数类型 表示 4 字节带符号的整数。数字的范围是从 -2147483648 到 2147483647。
长类型 表示 8 字节带符号的整数。数字的范围是从 -9223372036854775808 到 9223372036854775807。
浮点类型 表示 4 字节单精度浮点数。
双类型 表示 8 字节双精度浮点数。
小数类型 表示任意精度的带符号小数。由 java.math.BigDecimal 内部支持。BigDecimal 由任意精度未缩放的整数和 32 位整数小数组成。
字符串类型 表示字符串值。
VarcharType(长度) StringType 的一个变体,具有长度限制。如果输入字符串超过长度限制,则写入数据将失败。
字符类型(长度) 固定长度的 VarcharType(length) 的变体。CharType(n) 类型的读取列始终返回长度为 n 的字符串值。Char 类型列比较会将短列填充到较长的长度。
二进制类型 表示字节序列值。
布尔类型 表示布尔值。
日期类型 表示包含字段“年”、“月”和“日”的值,不含时区。
时间戳类型 带有本地时区 (TIMESTAMP_LTZ) 的时间戳。它表示包含字段“年”、“月”、“日”、“小时”、“分钟”和“秒”的值以及会话本地时区。时间戳值表示绝对时间点。
时间戳 NTZ 类型 不带时区的时间戳 (TIMESTAMP_NTZ)。它表示包含字段“年”、“月”、“日”、“小时”、“分钟”和“秒”的值。所有操作都是在不考虑任何时区的情况下执行的。
YearMonthIntervalType(startField, endField) 表示由连续的 MONTH 子集、年份 [0..11] 和年份 [0..11] 中的月份以及范围 [0..178956970] 中的年份组成的年间隔。
DayTimeIntervalType(startField、endField) 表示日时间间隔,该时间间隔由连续的 SECOND 子集组成,分钟内秒数,可能为秒数 [0..59.999999]、MINUTE、小时内分钟 [0..59]、小时内、天内小时 [0..23] 和 DAY 以及范围 [0..106751991] 中的天数组成。
ArrayType(elementType, containsNull) 表示由类型为 elementType 的一系列元素组成的值。containNull 用于指示 ArrayType 值中的元素是否可以具有 NULL 值。
MapType(keyType, valueType, valueContainsNull) 表示由一组键 - 值对组成的值。密钥的数据类型由 keyType 描述,值的数据类型由 valueType 描述。对于 MapType 值,不允许键具有空值。valueContainsNull 用于指示 MapType 值的值是否可以具有空值。
结构类型(字段) 表示具有一系列 StructFields(字段)描述的结构的值。
StructField(名称,数据类型,可为空) 表示 StructType 中的字段。字段的名称由名称指示。字段的数据类型由 dataType 指示。nullable 用于指示这些字段的值是否可以具有 null 值。

限制

以下限制适用于 AI Data Platform 中的表:

  • 无法在卷内或卷上的任何数据文件或目录上定义外部表。
  • 无法在存储桶或其目录中定义已用于其他外部表或外部卷的外部表
  • 无法在主目录中查看或列出视图。

方案演化

Oracle AI Data Platform 中的模式演变允许具有所需权限的用户使用记事本中的 SQL 更新托管表。

当表定义随时间变化以支持新列、删除的列、重命名的列、分区更改或表重命名而无需从头重新创建数据集时,此功能非常有用。支持的格式包括 Parquet、Avro、Delta 和 Iceberg。

支持的工序

针对托管表分析了以下方案演化操作:

操作 差值 Parquet Avro Iceberg
重命名表 受支持 受支持 受支持 受支持
添加列 受支持 受支持 受支持 受支持
删除列 受支持 不支持 不支持 受支持
更改或重命名列 受支持 不支持 不支持 受支持
替换栏位 受支持 不支持 不支持 受支持
添加分段 分区是在写入数据时自动创建的。无法通过 DDL 添加单个分区。 通过 DDL 支持 通过 DDL 支持 分区是在写入数据时自动创建的。无法通过 DDL 添加单个分区。可以使用 ALTER TABLE ... ADD PARTITION FIELD 将字段添加到分区规范。
删除分区 删除相关数据并运行 VACUUM。 受支持 受支持 无法通过 DDL 删除单个分区。改为删除相关行。可以使用 ALTER TABLE ... DROP PARTITION FIELD 从分区规范中删除字段。
更改数据类型 可能需要 CTAS 或覆盖方案解决方法。 不支持 不支持 仅支持兼容类型提升,例如 INT 到 BIGINT、FLOAT to DOUBLE,以及通过 ALTER TABLE 提高小数精度。不支持缩小和不兼容的转换。

创建托管表

您可以创建一个托管表来保存所管理方案的结构化数据。

  1. 打开创建表对话框。
    • 从左侧导航窗格中:
      1. 单击 “创建”图标 创建并选择表。
      2. 在选择表位置对话框中,选择要为其创建表的目录和方案,然后单击选择。
    • 从 “主目录”图标 主目录:
      1. 在主目录树或目录选项卡中,单击要为其创建表的目录以将其打开。
      2. 在方案选项卡中,单击要创建表以打开该表的方案。
      3. 单击添加到方案,然后选择表。

    创建选择了表类型的表托盘

  2. 从表类型下拉列表中,选择托管。
  3. 从托管表格式下拉列表中,选择表的格式:
    • Avro
    • CSV
    • Delta 湖
    • JSON
    • ORC
    • Parquet
    • 文本文档
  4. 拖放包含表数据的文件,或者单击浏览以查找和添加文件。
  5. 如果您选择了 CSV 或 JSON,请配置高级选项。
    • CSV :指定文件是否具有标题、数据是否可以跨多行、编码、转义符、分隔符和引号字符。
    • JSON :指定数据是否可以跨多行、是否允许注释和单引号以及编码。
  6. 如果显示,请单击预览数据。
  7. 输入表名和说明。
  8. 可选:如果您的表很大,请展开分区键(可选)。单击添加分区并选择数据列。
  9. 可选:要向数据目录的元数据添加表属性,请展开表属性(可选)。单击添加属性并输入属性及其值。
  10. 单击创建。

创建外部表格

您可以创建外部表来直接在 OCI Object Storage 中查询数据,而无需在 Oracle AI Data Platform 中移动或复制数据。

  1. 打开创建表对话框。
    • 从左侧导航窗格中:
      1. 单击 “创建”图标 创建并选择表。
      2. 在选择表位置对话框中,选择要为其创建表的目录和方案,然后单击选择。
    • 从 “主目录”图标 主目录:
      1. 在主目录树或目录选项卡中,单击要为其创建表的目录以将其打开。
      2. 在方案选项卡中,单击要创建表以打开该表的方案。
      3. 单击添加到方案,然后选择表。

    创建表页打开时选择了表类型“外部”

  2. 从表类型下拉列表中,选择外部。
  3. 从输入数据格式下拉列表中,选择表的格式:
    • Avro
    • CSV
    • Delta 湖
    • JSON
    • ORC
    • Parquet
    • 文本文档
  4. 如果您选择了 CSV 或 JSON,请配置高级选项。
    • CSV :指定文件是否具有标题、数据是否可以跨多行、编码、转义符、分隔符和引号字符。
    • JSON :指定数据是否可以跨多行、是否允许注释和单引号以及编码。
  5. 从存储数据的 OCI 对象存储中浏览并选择区间、存储桶和文件夹(可选)。您可以选择的对象基于登录用户的 IAM 权限。
  6. 输入表名和说明。
  7. 可选:如果您的表很大,请展开分区键(可选)。单击添加分区并选择数据列。
  8. 可选:要向数据目录的元数据添加表属性,请展开表属性(可选)。单击添加属性并输入属性及其值。
  9. 单击创建。

查看表详细资料

您可以查看表的详细信息来查看其配置和元数据。

表的详细信息选项卡显示表键、类型和格式,以及创建表和上次更新表的时间和对象。它还显示表属性。

  1. 在左侧导航窗格中,单击 “主目录”图标 主目录。
  2. 在主目录树中,展开包含要查看的表的目录和方案,然后单击表。
  3. 在“表”选项卡中,找到您的表,然后单击 “操作三个点”图标 操作,然后单击查看。
  4. 单击详细信息。

重命名表格

如果表的内容或用途已更改,则可以重命名所管理的表。

注意:

对 Oracle AI Data Platform 中的外部表的编辑不会推送到 OCI Object Storage 中的远程目录。
  1. 在左侧导航窗格中,单击 “主目录”图标 主目录。
  2. 在主目录树中,展开包含要编辑的表所在的目录和方案,然后单击表。
  3. 在“表”选项卡中,找到您的表,然后单击 “操作三个点”图标 操作,然后单击重命名。
  4. 编辑表名并按 Enter 键。

编辑表说明

如果表的内容或用途已更改,则可以修改所管理的表的说明。

注意:

对 Oracle AI Data Platform 中的外部表的编辑不会推送到 OCI Object Storage 中的远程目录。
  1. 在左侧导航窗格中,单击 “主目录”图标 主目录。
  2. 在主目录树中,展开包含要编辑的表所在的目录和方案,然后单击表。
  3. 在“表”选项卡中,找到您的表并单击 “操作三个点”图标 操作,然后单击编辑说明。
  4. 编辑表说明,然后单击保存。

删除表

当不再需要表时,您可以从所管理的方案中删除表。

注意:

外部表引用的 OCI 对象存储中的数据不会删除。
  1. 在左侧导航窗格中,单击 “主目录”图标 主目录。
  2. 在主目录树中,展开包含要删除的表的目录和方案,然后单击表。
  3. 在“表”选项卡中,找到您的表,然后单击 “操作三个点”图标 操作,然后单击删除。
  4. 单击删除。