关于使用 SQL 管理列表

通过列表,您可以向任何 Snowflake 区域中的账户共享数据产品。有关列表的更多信息,请参阅 关于列表

供应商可以使用 SQL 命令创建和管理列表,并将其提供给特定使用者。要使用 SQL 共享列表,提供商需要完成以下任务:

备注

提供商不能提供付费、个性化的列表,或者有关私密数据交换的列表。

使用 SQL 处理列表的先决条件

列表和应用程序所有者角色:

创建列表时,应使用包含列表中数据或应用程序包的账户。以下角色必须相同:将数据产品附加到列表并发布列表的角色,以及创建(并因此而拥有)应用程序包或共享的角色。您不能转让共享的 OWNERSHIP 权限。

如果使用其他角色创建和管理列表,请将列表的 MODIFY 权限授予拥有应用程序包或共享的角色。例如:

共享或应用程序包所有者角色:

共享或应用程序包的 OWNERSHIP 权限。列表的 MODIFY 权限。

列表所有者角色:

列表的 OWNERSHIP 权限。

全局 CREATE DATA EXCHANGE 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: ...
Copy

每个清单还包含其他部分,如:

auto_fulfillment: ...
Copy

以及一些可选字段,如 data_dictionarybusiness_needs 等等。

简单的清单将包含:

title: "MyFirstListing"
subtitle: "Example listing"
description: "This is my first listing!"
listing_terms:
  type: "OFFLINE"
targets:
   accounts: ["Org1.Account1"]
Copy

有关更多信息,请参阅 列表清单引用

有关与使用 SQL 管理列表相关联的其他示例和用例,请参阅 以提供商身份通过 SQL 管理列表 – 示例

使用 SQL 创建列表

要创建列表,可使用 CREATE LISTING 命令,在描述列表的 YAML 清单中指定名称和列表详细信息。使用 CREATE LISTING ... 创建的列表会自动发布。创建列表后,您可以使用 ALTER LISTING 对其进行更改,其中包括取消发布和发布支持。

请注意,与 Snowsight 不同的是,使用 SQL 创建列表时,关联的共享必须已经存在。

此外,列表可以是 描述的显示的发布和取消发布的,以及 删除的

备注

使用 SQL 创建的列表在概念上与 使用私密列表与特定使用者共享数据或应用程序 相似。 在使用 SQL 创建列表之前,您应熟悉并能轻松使用 SnowsightProvider 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;
Copy

备注

使用列表的 NAME 标识列表。 列表 NAME 是最初创建列表时使用的标识符。在上例中,列表名称为 MY1STLISTING。 虽然标题、子标题和其他列表特征可以更改,但 NAME 不能通过在 yaml 中指定一个新名称来更改。使用 ALTER LISTING ...RENAME TO 来重新命名列表。ALTER LISTINGSHOW LISTINGSDESCRIBE LISTINGDROP LISTING 等命令都使用 NAME 来标识列表。Snowsight 中不显示列表 NAME,而是按标题标识列表。

有关与使用 SQL 管理列表相关联的其他示例和用例,请参阅 以提供商身份通过 SQL 管理列表 – 示例

使用 SQL 发布列表

您可以使用 ALTER LISTING ...PUBLISH 和 ALTER LISTING ...UNPUBLISH 发布和取消发布列表。

有关使用 Snowsight 发布列表的更多信息,请参阅 发布列表

请注意,使用 CREATE LISTING 创建的列表可以自动发布。

例如,要发布之前未发布的列表,请执行以下命令:

ALTER LISTING MY1STLISTING PUBLISH;
Copy

此外,在可以删除列表之前,该列表必须取消发布。 要取消发布以前发布的列表,请执行类似以下所示的命令:

ALTER LISTING MY1STLISTING UNPUBLISH;
Copy

有关与使用 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 *"
$$;
Copy

有关与使用 SQL 管理列表相关联的其他示例和用例,请参阅 以提供商身份通过 SQL 管理列表 – 示例

使用 SQL 检查列表

与表和其他 SQL 元素一样,可以描述和显示列表。 DESCRIBE LISTING 将单个列表名称用作参数,并提供该列表的详细信息。 SHOW LISTINGS 可以提供一组列表的相关信息(如果使用 LIKE 筛选器),或者,在未提供筛选器的情况下,提供给定账户创建的所有列表的相关信息。

要显示 MY1STLISTING 列表的详细信息,请执行类似以下所示的命令:

SHOW LISTINGS LIKE 'MY1STLISTING';
Copy

要显示您的角色可以访问的所有列表,请执行类似以下所示的命令:

SHOW LISTINGS;
Copy

描述 列表 MY1STLISTING,请执行类似以下所示的命令:

DESC LISTING MY1STLISTING;
Copy

使用 SQL 删除列表

要移除列表,您必须首先取消发布该列表。在使用 SQL 删除列表之前,您应该熟悉如何使用 Snowsight 移除列表。 有关使用 Snowsight 移除列表的更多信息,请参阅 以提供商身份移除列表

要取消发布列表,请执行类似以下所示的命令:

ALTER LISTING MY1STLISTING UNPUBLISH;
Copy

要删除列表,请执行类似以下所示的命令:

DROP LISTING IF EXISTS MY1STLISTING
Copy
语言: 中文