文章
· 十月 9 阅读大约需 2 分钟

在 IRIS 中使用 Foreign Table(外部表)

 

Foreign Table 的概念

Foreign Table 是 IRIS SQL 中一种特殊类型的表。它不代表 IRIS 本地全局管理的数据,而是投射出来的,由 “外部服务器 ”管理的外部数据。从 SQL 的角度来看,外部表与普通表一样,可以在查询中使用,没有任何特定限制。

在数据编织中可以帮助整合不同的来源的数据,以支持各种应用、分析并提供智能洞察力。

 

Foreign Table 和 Linked Table 的区别

Linked Table

  • Lined Table 不能读取外部文件
  • 对于 JDBC 和 ODBC 的数据源是分开的

Foreign Table

  • 可以读取外部文件
  • 不局限于同一类型的数据源

 

Foreign Table 的用例

  • 当某个数据集时由外部应用程序在外部数据库中管理,而你的 IRIS 查询需要在该外部数据集中查找某些内容时,您可以使用某种 ETL 流程将数据加载到 IRIS 中,但如果外部数据经常更新,而你的查询需要访问当前的版本,那么这个过程可能会变得很棘手。可以通过 Foreign Table 将数据投射到 IRIS 并在查询时从外部源检索当前数据来解决这个问题。
  • 当您要使用某些基于文件的大型数据集,您只需要偶尔查询一下,用来建立报告或训练模型。由于文件过大,加载文件可能会很麻烦,而且大型数据会占用昂贵的存储空间,而且一旦文件更新,就必须清除并重新加载。Foreign Table可以保持 SQL 查询对数据的可访问性,而不会增加 IRIS 的存储空间占用,也可以会保持最新数据。

 

Foreign Table 操作步骤

创建外部服务器

CREATE FOREIGN SERVER Sample.PostgresDB FOREIGN DATA WRAPPER JDBC CONNECTION 'postgresConnection'

创建 Foreign Tables

CREATE FOREIGN TABLE Sample.AccountTeam ( TeamID BIGINT, Name VARCHAR(50), CountryCode VARCHAR(10) ) SERVER Sample.PostgresDB TABLE 'Sample.Teams'

查询

SELECT t.Name, COUNT(m.*) FROM Sample.AccountManager m JOIN Sample.AccountTeam t ON m.TeamID = t.TeamID WHERE t.CountryCode = 'UK' AND m.Salary > 100000 GROUP BY t.Name

删除 Foreign Tables

DROP FOREIGN TABLE Example.MyForeignTable

删除外部服务器

DROP FOREIGN SERVER Example.PostgresDB CASCADE

( CASCADE 选项用来删除外部服务器和该外部服务器上定义的所有外部表 )

 

Foreign Table 演示

如果您想获取更详细的对于Foreign Table的演示,您可以参考 InterSystems 2023 峰会上面的演示示例,该示例使用docker,示例代码请参考Github ,安装后访问http://localhost:8888/

讨论 (0)1
登录或注册以继续