外部目录
外部目录是从 Oracle AI Data Platform Workbench 之外的位置获取数据的目录。
外部目录将 AI Data Platform 连接到外部数据源(包括 Oracle Autonomous AI Lakehouse 、Oracle AI Database 和 Oracle Autonomous AI Transaction Processing )以及第三方存储(例如 Snowflake、Azure SQL 和 MySQL)。AI Data Platform 可搜索这些源的元数据并将其同步到主目录中,使用户能够浏览和查询远程方案和表,而无需复制基础数据。
外部目录使用在外部目录创建期间提供的身份证明来查询外部源。有关数据源的更多信息,请参阅内部源。
例如,如果为 Autonomous AI Lakehouse 实例创建外部目录,其中使用的 Autonomous AI Lakehouse 用户凭证可以访问 schema1 ,但不能访问 schema2 ,则外部目录中仅显示 schema1 。具有外部目录权限的用户只能查询 Autonomous AI Lakehouse 用户有权访问的模式。
注意:
AI 数据平台工作台不支持从可插入数据库 (Pluggable Databases,PDB) 之间共享的方案和表或从 Oracle 维护的方案和表中收集数据。Autonomous AI Lakehouse 和 Autonomous AI Transaction Processing 所需的权限
- 用于连接到数据库的 CREATE SESSION
- 通过最小权限授予或专用读取角色对所需对象(表/视图/外部表)的 SELECT 访问权限
- 阅读,写入 DIRECTORY DATA_PUMP_DIR
限制
外部目录不支持 UPDATE 操作。使用外部目录表进行搜索和查询访问。
不支持 DDL,即使用于创建外部目录的身份证明具有执行 DDL 语句的权限也是如此。
- 如果以大写形式提供表名,则使用大写字母创建表,并遵循 Autonomous AI Lakehouse 中的默认不区分大小写行为。
- 如果以小写形式提供表名,则会在 Autonomous AI Lakehouse 中以区分大小写的方式创建表。通过 Autonomous AI Lakehouse 创建的表的列名始终区分大小写。
使用 SQL 刷新外部目录
您可以使用 SQL 语法刷新外部目录、方案和表的元数据。
要刷新外部目录,请使用:
REFRESH EXTERNAL CATALOG <<catalog_name>>要刷新外部目录中的方案,请使用:
REFRESH SCHEMA IN EXTERNAL CATALOG <<catalog_name.schema_name>>要刷新外部目录中方案中的表,请使用:
REFRESH TABLE IN EXTERNAL CATALOG <<catalog_name.schema_name.table_name>>有关详细信息,请参阅 SQL 语法。
如何从外部目录中的表中删除数据
当将目录和表配置为支持下推 SQL DELETE 时,可以使用 Spark 写入路径从外部目录表中删除行。
使用目录 ID 删除表数据:Python 示例
from pyspark.sql.types import StructType
df = spark.createDataFrame([], StructType([]))
df.write
.format("aidataplatform")
.option("catalog.id", "<catalog>")
.option("pushdown.sql", "DELETE FROM <schema>.<target_table> WHERE ID = 2")
.save()
使用目录 ID 删除表数据:Scala 示例
val df = spark.emptyDataFrame
df.write
.format("aidataplatform")
.option("catalog.id", "<catalog>")
.option("pushdown.sql", "DELETE FROM <schema>.<target_table> WHERE ID = 2")
.save()
用于删除表数据的摄取样式示例:Python 示例
from pyspark.sql.types import StructType
df = spark.createDataFrame([], StructType([]))
df.write
.format("aidataplatform")
.option("data.asset.type", "ORACLE_ALH")
.option("tns.alias", alhTns)
.option("user.name", userName)
.option("wallet.content", alhWalletContent)
.option("password", alhPassword)
.option("pushdown.sql", "DELETE FROM ADMIN.PUSHDOWN_FEATURE WHERE ID = 2")
.save()用于删除表数据的摄取样式示例:Scala 示例
val df = spark.emptyDataFrame
df.write
.format("aidataplatform")
.option("data.asset.type", "ORACLE_ALH")
.option("tns.alias", alhTns)
.option("user.name", userName)
.option("wallet.content", alhWalletContent)
.option("password", alhPassword)
.option("pushdown.sql", "DELETE FROM ADMIN.PUSHDOWN_FEATURE WHERE ID = 2")
.save()


