从工作区中的 SQL 编辑器查询

本页介绍如何使用两种不同的连接方法从分析和 AI 工作区中的 SQL 编辑器查询 Lakebase 项目中的数据库。

工作区中的 SQL 编辑器是一个协作 SQL 工作区,可在其中创作查询、查找数据目录、创建可视化效果并与同事共享结果。 它具有用于分析、协作和自动化的高级功能。

注释

对于 Postgres 本机功能(例如EXPLAIN/ANALYZE)和元命令(\dt、\d、\l),请使用 Lakebase SQL 编辑器。 请参阅 Lakebase SQL 编辑器中的查询。

有关 SQL 编辑器功能的完整信息,请参阅 写入查询并浏览 SQL 编辑器中的数据。

连接方法

可以使用两种方法从 SQL 编辑器连接到 Lakebase 数据库:

  1. 直接计算连接:直接连接到 Lakebase 计算,以便立即访问特定项目和分支。
  2. Unity 目录注册:在 Unity 目录中注册数据库,以启用联合查询、统一治理和跨源分析。

选择连接方法

功能 / 特点 直接计算连接 Unity 分类目录注册
数据访问 对 Lakebase 数据库的完整读写访问权限 通过 Unity 目录进行只读访问
最适用于 主要使用 Lakebase 数据而不将其与其他数据源组合在一起 将 Lakebase 数据与其他 Unity 目录表组合在联合查询中
安装复杂性 无需注册即可立即访问查询特定数据库 需要目录注册和 Unity Catalog 权限
治理 没有 Unity Catalog 管理功能 统一治理控制(权限、世系、审核日志)
访问控制 PostgreSQL 仅基于角色的权限设置 集中化发现和访问控制,适用于多个数据源
用例 直接数据库操作和修改 集成事务和分析数据的仪表板和应用程序

方法 1:直接连接到 Lakebase 计算

使用此方法直接连接到 Lakebase 计算,以便立即进行查询访问。

在您开始之前

如果你不是项目所有者,请验证你是否具有:

  • Postgres 角色:用于访问数据库的相应 Postgres 角色。 请参阅 “管理 Postgres 角色”。
  • 数据库权限:访问数据库、架构或表所需的权限。 请参阅 “管理权限”。

如果缺少必要的角色或权限,请联系项目所有者请求访问权限。

注释

Lakebase 计算必须处于活动状态才能附加到它。 如果计算处于空闲状态,则无法连接。 当启用 缩放到零 且没有数据库活动时,计算通常变为非活动状态。

若要激活空闲计算,请在 Lakebase SQL 编辑器中运行查询,或禁用缩放为零,以确保计算保持活动状态。 参见 缩放到零。

直接连接到 Lakebase 计算资源:

  1. 用应用切换器切换到 分析和人工智能。
  2. 单击侧栏中的 SQL 编辑器图标 SQL编辑器 ,打开 SQL 编辑器。
  3. 在计算下拉菜单中,选择“ 更多...”

“连接”菜单

  1. 在附加到现有计算资源对话框中, 选择 Lakebase Postgres,选择 Autoscaling 选项,然后选择 Project 和 Branch。

附加到 LKB 项目和分支

  1. 单击“ 附加 ”进行连接。

直接连接的示例查询

连接后,可以针对 Lakebase 数据库运行标准 Postgres SQL 查询。

创建表、插入数据并对其进行查询:

CREATE TABLE IF NOT EXISTS playing_with_lakebase(id SERIAL PRIMARY KEY, name TEXT NOT NULL, value REAL);
INSERT INTO playing_with_lakebase(name, value)
SELECT LEFT(md5(i::TEXT), 10), random() FROM generate_series(1, 10) s(i);
SELECT * FROM playing_with_lakebase;

查询特定表:

SELECT * FROM public.playing_with_lakebase;

重要

直接连接的限制:

  • 不支持联合查询:只能查询连接的 Lakebase 项目和分支。 不能在单个查询中将 Lakebase 数据与其他 Unity 目录表合并。
  • 不支持 Postgres 元命令:在 Lakebase SQL 编辑器中工作的 Postgres 元命令(例如\dt\d,)\l在 SQL 编辑器中不起作用(Lakehouse)。

方法 2:在 Unity 目录中注册数据库

使用此方法在 Unity 目录中注册 Lakebase 数据库,从而跨数据源启用联合查询和统一治理。

在您开始之前

请确认您已具备:

  • Postgres 角色:用于访问数据库的相应 Postgres 角色。 请参阅 “管理 Postgres 角色”。
  • 数据库权限:访问数据库、架构或表所需的权限。 请参阅 “管理权限”。
  • Unity Catalog 特权:Unity Catalog 元存储上用于注册数据库的 CREATE CATALOG 特权
  • SQL 仓库: 无服务器 SQL 仓库。 Pro 和 Classic SQL 仓库不受支持,并会返回 PERMISSION_DENIED 错误。

如果缺少必要的角色或权限,请联系项目所有者请求访问权限。

重要

Lakebase 目录需要 无服务器 SQL 仓库。 如果在查询时看到错误 PERMISSION_DENIED ,请检查 SQL 编辑器中选择的仓库是否为无服务器。 打开仓库下拉列表并切换到无服务器仓库。

注册数据库

若要在 Unity 目录中注册 Lakebase 数据库,请执行以下作:

  1. 用应用切换器切换到 分析和人工智能。
  2. 在目录资源管理器中,单击加号按钮并 创建目录。
  3. 输入目录名称(例如 lakebase_catalog)。
  4. 选择 Lakebase Postgres 作为目录类型,然后选择 “自动缩放 ”选项。
  5. 选择项目、分支和 Postgres 数据库。
  6. 单击 “创建” 。

目录显示在目录资源管理器中,可在其中找到架构、表和视图。

通过 Unity 目录进行查询

注册后,使用 SQL 仓库或任何连接到 Unity 目录的工具查询 Lakebase 数据库。

查询已注册的数据库:

-- Query a registered Lakebase database
SELECT * FROM chatbot_catalog.public.conversations
WHERE created_at >= current_date - INTERVAL 7 DAYS;

整合 Lakebase 和 Lakehouse 的数据:

-- Join Lakebase and Unity Catalog data
SELECT
  c.conversation_id,
  c.user_id,
  c.agent_response,
  u.user_name,
  u.subscription_tier
FROM chatbot_catalog.public.conversations c
JOIN main.user_analytics.users u
  ON c.user_id = u.user_id;

有关 Unity 目录权限和授予其他用户访问权限的信息,请参阅 “权限和访问控制”。

重要

Unity Catalog 注册的限制:

  • 只读访问权限:通过 Unity Catalog,从 Lakebase 数据库注册的目录具有只读属性。 若要修改数据,请使用 Lakebase SQL 编辑器或直接连接到数据库。
  • 每个目录的单一数据库:每个 Unity 目录目录表示一个 Lakebase 数据库。 若要公开多个数据库,请分别注册每个数据库。
  • 元数据同步:Unity 目录缓存元数据以减少 Postgres 请求。 新对象可能不会立即显示。 单击“ 刷新架构”图标 以触发完全刷新。
  • 分支数据库注册:尚不支持将分支数据库注册为单独的目录。 分支从其父级继承 Unity 目录注册元数据,这会导致新的目录注册失败。

有关在 Unity 目录中注册数据库的完整信息,请参阅 在 Unity 目录中注册 Lakebase 数据库。

其他资源