关于使用 SQL 管理列表¶
通过列表,您可以向任何 Snowflake 区域中的账户共享数据产品。要了解有关列表的更多信息,请参阅 关于列表共享。
供应商可以使用 SQL 命令创建和管理列表,并将其提供给特定使用者。要使用 SQL 共享列表,提供商需要完成以下任务:
(可选)创建提供商简介以提供列表。请参阅 成为提供商。
备注
提供商不能提供付费、个性化的列表,或者有关私密数据交换的列表。
使用 SQL 处理列表的先决条件¶
-
如果您要创建免费的私密列表,并且您已接受 Snowflake 客户控制的数据共享功能条款,则无需接受 Snowflake 提供商和使用者条款。
为列表准备数据。请参阅 准备列表。
查看 提供商政策。
配置账户权限。
列表和应用程序所有者角色:¶
创建列表时,应使用包含列表中数据或应用程序包的账户。以下角色必须相同:将数据产品附加到列表并发布列表的角色,以及创建(并因此而拥有)应用程序包或共享的角色。您不能转让共享的 OWNERSHIP 权限。
如果使用其他角色创建和管理列表,请将列表的 MODIFY 权限授予拥有应用程序包或共享的角色。例如:
- 共享或应用程序包所有者角色:
共享或应用程序包的 OWNERSHIP 权限。列表的 MODIFY 权限。
- 列表所有者角色:
列表的 OWNERSHIP 权限。
全局 CREATE LISTING 权限。
在提供商账户中,您可以使用以下任一方式来创建和管理列表:
- ACCOUNTADMIN:
如果您使用 ACCOUNTADMIN 角色来创建和管理列表,则 ORGADMIN 角色必须首先 委派自动履行的设置权限。
- 自定义角色:
如果您使用自定义角色,则 ORGADMIN 角色必须首先 委派自动履行的设置权限 给 ACCOUNTADMIN 角色,然后再由此角色向该自定义角色授予相关权限。
有关授予共享权限的更多信息,请参阅 向其他角色授予权限。
定义列表清单¶
要创建列表,必须先创建列表清单。清单以 YAML (https://yaml.org/spec/ (https://yaml.org/spec/)) 编写,包括前缀、必填字段和可选字段。
例如,要创建一个包含列表术语的简单带标题列表,请定义一个清单,其类似于:
title: A title for the listing.
subtitle: An optional subtitle.
description: A general description.
profile: Provider profile reference.
listing_terms: ...
targets: ...
每个清单还包含其他部分,如:
auto_fulfillment: ...
以及一些可选字段,如 data_dictionary
、business_needs
等等。
简单的清单将包含:
title: "MyFirstListing"
subtitle: "Example listing"
description: "This is my first listing!"
listing_terms:
type: "OFFLINE"
targets:
accounts: ["Org1.Account1"]
有关更多信息,请参阅 列表清单引用。
有关与使用 SQL 管理列表相关联的其他示例和用例,请参阅 以提供商身份通过 SQL 管理列表 – 示例。
使用 SQL 创建列表¶
要创建列表,可使用 CREATE LISTING 命令,在描述列表的 YAML 清单中指定名称和列表详细信息。使用 CREATE LISTING ... 创建的列表会自动发布。创建列表后,您可以使用 ALTER LISTING 对其进行更改,其中包括取消发布和发布支持。
请注意,与 Snowsight 不同的是,使用 SQL 创建列表时,关联的共享必须已经存在。
此外,列表可以是 描述的、显示的、发布和取消发布的,以及 删除的。
备注
使用 SQL 创建列表在概念上类似于`使用私密列表与特定使用者共享数据或应用程序`_。 在使用 SQL 创建列表之前,您应熟悉并能轻松使用 Snowsight 和 Provider Studio 创建、查看和发布列表。有关更多信息,请参阅 使用私密列表与特定使用者共享数据或应用程序。
在创建列表之前,请确保您已完成所有 先决条件。
例如,如果要从共享 myshare
创建标题为“My first SQL listing”的 DRAFT 列表 my1stlisting
,请执行以下命令:
CREATE EXTERNAL LISTING my1stlisting
SHARE myshare AS
$$
title: "My first SQL listing"
description: "This is my first listing"
listing_terms:
type: "OFFLINE"
targets:
accounts: ["Org1.Account1"]
$$ PUBLISH=FALSE REVIEW=FALSE;
备注
使用列表的 NAME 标识列表。 列表 NAME 是最初创建列表时使用的标识符。在上例中,列表名称为 MY1STLISTING。 虽然标题、子标题和其他列表特征可以更改,但 NAME 不能通过在 yaml 中指定一个新名称来更改。使用 ALTER LISTING ... RENAME TO 来重新命名列表。ALTER LISTING、SHOW LISTINGS、DESCRIBE LISTING 和 DROP LISTING 等命令都使用 NAME 来标识列表。Snowsight 中不显示列表 NAME,而是按标题标识列表。
有关与使用 SQL 管理列表相关联的其他示例和用例,请参阅 以提供商身份通过 SQL 管理列表 – 示例。
使用 SQL 发布列表¶
可以使用 ALTER LISTING ... PUBLISH 和 ALTER LISTING ... UNPUBLISH 发布和取消发布列表。
有关使用 Snowsight 发布列表的更多信息,请参阅 发布列表。
请注意,使用 CREATE LISTING 创建的列表可以自动发布。
例如,要发布之前未发布的列表,请执行以下命令:
ALTER LISTING MY1STLISTING PUBLISH;
此外,在可以删除列表之前,该列表必须取消发布。 要取消发布以前发布的列表,请执行类似以下所示的命令:
ALTER LISTING MY1STLISTING UNPUBLISH;
有关与使用 SQL 管理列表相关联的其他示例和用例,请参阅 以提供商身份通过 SQL 管理列表 – 示例。
使用 SQL 扩展列表的定义¶
前面的示例不包括目标或使用示例。您可以使用 ALTER LISTING 更改列表的特征。在本例中,我们将更新现有列表,以添加目标和示例 SQL。 请注意,原始 YAML 清单扩展为包含新内容。
要更改列表以包含更多字段,请执行类似以下所示的命令:
ALTER LISTING MY1STLISTING AS
$$
title: "My First SQL Listing"
description: "This is my first listing"
listing_terms:
type: "OFFLINE"
targets:
accounts: ["Org1.Account1"]
usage_examples:
- title: "this is a test sql"
description: "Simple example"
query: "select *"
$$;
有关与使用 SQL 管理列表相关联的其他示例和用例,请参阅 以提供商身份通过 SQL 管理列表 – 示例。
使用 SQL 检查列表¶
就像表和其他 SQL 元素一样,列表可以描述和显示。DESCRIBE LISTING 采用单个列表名称作为参数,并提供有关该列表的详细信息。SHOW LISTINGS 可以使用 LIKE
筛选器提供有关一组列表的信息,如果未提供筛选器,则可以提供有关给定账户创建的所有列表的信息。
要显示 MY1STLISTING 列表的详细信息,请执行类似以下所示的命令:
SHOW LISTINGS LIKE 'MY1STLISTING';
要显示您的角色可以访问的所有列表,请执行类似以下所示的命令:
SHOW LISTINGS;
要 描述 列表 MY1STLISTING,请执行类似以下所示的命令:
DESC LISTING MY1STLISTING;
使用 SQL 删除列表¶
要移除列表,您必须首先取消发布该列表。在使用 SQL 删除列表之前,您应该熟悉如何使用 Snowsight 移除列表。 有关使用 Snowsight 移除列表的更多信息,请参阅 作为提供商移除列表。
要取消发布列表,请执行类似以下所示的命令:
ALTER LISTING MY1STLISTING UNPUBLISH;
要删除列表,请执行类似以下所示的命令:
DROP LISTING IF EXISTS MY1STLISTING