表定义数据的结构。

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

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

外部表

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

确保您的用户具有创建外部表所需的以下 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 Workbench 的 IAM 策略

受管表

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

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

支持的表格式

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

限制

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

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

方案演化

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

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

支持的工序

针对托管表分析了以下方案演化操作:
  • 重命名表:Delta、Parquet 和 Avro 支持
  • 添加列:Delta、Parquet 和 Avro 支持
  • 删除列:Delta 支持;Parquet 和 Avro 不支持
  • 更改或重命名列:Delta 支持;Parquet 和 Avro 不支持
  • 替换列:仅 Delta 支持
  • 添加分区:Parquet 和 Avro 通过 DDL 支持;对于 Delta,在插入数据期间(而不是通过 DDL)支持分区处理
  • 删除分区:Parquet 和 Avro 支持;对于 Delta,通过删除数据并运行真空中而不是直接 DDL 来删除分区
  • 更改数据类型:Parquet 或 Avro 不支持;Delta 不支持通过直接 DDL 进行更改,并且可能需要基于 CTAS 或覆盖方案的解决方法

创建托管表

您可以为所管理的方案创建表。

  1. 导航到要为其创建表的方案。
  2. 选择选项卡。
  3. 单击 “Create Table(创建表)”图标 创建表

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

  4. 表类型选择托管
  5. 托管表格式中选择表的格式。
  6. 拖放包含表数据的文件,或单击以浏览到文件位置。
  7. 请为表提供名称和说明。
  8. 可选:要添加分区,请展开分区键(可选)。单击添加分区并选择数据列。
  9. 可选:要向数据目录的元数据添加表属性,请展开表属性(可选)。单击添加属性并提供属性及其值。
  10. 单击创建

创建外部表格

您可以在 OCI Object Storage 中创建包含数据的外部表。

  1. 导航到要为其创建表的方案。
  2. 选择选项卡。
  3. 单击 “Create Table(创建表)”图标 创建表

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

  4. 表类型选择外部
  5. 从 OCI Object Storage 中选择存储数据的区间、存储桶和文件夹。您可以选择的对象基于登录用户的 IAM 权限。
  6. 请为您的表提供名称和说明。
  7. 可选:要向数据目录的元数据添加表属性,请展开表属性(可选)。单击添加属性并提供属性及其值。
  8. 单击创建

编辑表格

可以修改所管理的表的详细信息。

注意:

在 Oracle AI Data Platform Workbench 中对外部目录表的编辑不会推送到远程目录。
  1. 导航到您的方案。
  2. 选择选项卡。
  3. 在要编辑的表旁边,单击 “操作三个点”图标 操作
    • 单击重命名以更改表的名称。输入新名称并按 Enter
    • 单击编辑说明以更改表的说明。提供新说明,然后单击保存

查看表详细资料

您可以查看方案中的表的详细信息。

  1. 导航到您的方案。单击选项卡。
  2. 单击要查看其详细信息的卷的名称。您还可以单击卷旁边的 “操作三个点”图标 操作,然后单击查看
  3. 单击详细信息选项卡。

删除表

可以从所管理的方案中删除表。

  1. 导航到要从中删除表的方案。
  2. 单击选项卡。
  3. 在要删除的表旁边,单击 “操作三个点”图标 操作,然后单击删除
  4. 单击删除