从云存储加载数据:Microsoft Azure¶
简介¶
本教程向您展示如何使用 SQL 将数据从云存储加载到 Snowflake 中。您将在 Snowsight 中使用模板工作表以完成这些任务。您可以选择要使用的云提供商:Amazon S3、Microsoft Azure 或 Google Cloud Storage (GCS)。该工作表包含自定义的 SQL 命令,用于与每种存储类型兼容。
注意
本教程中提供的示例特定于 Microsoft Azure,并显示 SQL 命令,用于从 Azure 容器加载数据。
备注
Snowflake 对本教程中示例数据使用的磁盘存储收取最低费用。本教程提供删除数据库并最大程度地降低存储成本的步骤。
Snowflake 需要一个 虚拟仓库 加载数据并执行查询。正在运行的虚拟仓库会使用 Snowflake Credit。在本教程中,您将使用 30 天试用账户 (https://signup.snowflake.com/),该账户提供免费 Credit,您无需支付任何费用。
您将学习的内容¶
在本教程中,您将学习如何:
使用具有创建和使用本教程所需的 Snowflake 对象的权限的角色。
使用仓库访问资源。
创建数据库和架构。
创建表。
为您的云平台创建存储集成。
为您的存储集成创建暂存区。
将数据从暂存区加载到表中。
查询表中的数据。
先决条件¶
本教程假定满足以下条件:
您拥有 支持的浏览器。
您拥有试用账户。如果您还没有试用账户,可以注册一个 免费试用账户 (https://signup.snowflake.com/)。您可以选择任意 Snowflake 云区域。
您有一个账户,可用来从以下云提供商之一批量加载数据:
AWS S3。请参阅 从 Amazon S3 批量加载。
Microsoft Azure。请参阅 从 Microsoft Azure 批量加载。
Google Cloud Storage。请参阅 从 Google Cloud Storage 批量加载。
备注
本教程仅适用于拥有试用账户的用户。示例工作表不适用于其他类型的账户。
第 1 步:使用 Snowsight 登录¶
要通过公共互联网访问 Snowsight,请执行以下操作:
在支持的 Web 浏览器中,导航至 https://app.snowflake.cn。
提供 账户标识符 或账户 URL。如果您之前登录过 Snowsight,可能会看到一个可以选择的账户名称。
使用 Snowflake 账户凭据登录。
第 2 步:打开 Load data from cloud storage 工作表¶
您可以使用工作表来编写和运行数据库上的 SQL 命令。您的试用账户有权访问本教程的模板工作表。该工作表具有 SQL 命令,可运行以创建数据库对象、加载数据和查询数据。因为它是一个模板工作表,所以系统将邀请您为特定的 SQL 参数输入自己的值。有关工作表的更多信息,请参阅 工作表入门。
本教程的工作表未预加载到试用账户中。要打开本教程的工作表,请按照下列步骤操作:
如果您是首次登录到 Snowsight 试用账户,请在 Where do you want to start? 屏幕上的 Load data into Snowflake 下选择 Start。
如果您已离开 Where do you want to start? 屏幕,请转到 Worksheets 选项卡,然后选择横幅中的 Continue。
在中间名为 Load data from cloud storage 的面板上点击任意位置。
[Template] Load data from cloud storage worksheet 会打开,您的浏览器显示的内容与下图类似。
第 3 步:设置要使用的角色和仓库¶
您使用的角色决定了您拥有的权限。在本教程中,使用 ACCOUNTADMIN 系统角色,以便您查看和管理账户中的对象。有关更多信息,请参阅 使用 ACCOUNTADMIN 角色。
仓库提供执行 DML 操作、加载数据和运行查询所需的计算资源。这些资源包括 CPU、内存和临时存储。您的试用账户拥有一个虚拟仓库 (compute_wh
),可用于本教程。有关更多信息,请参阅 虚拟仓库。
要设置要使用的角色和仓库,请执行以下操作:
在打开的工作表中,将光标置于 USE ROLE 行。
USE ROLE accountadmin;
在工作表的右上角,选择 Run。
备注
在本教程中,每次运行一个 SQL 语句。不要选择 Run All。
将光标置于 USE WAREHOUSE 行,然后选择 Run。
USE WAREHOUSE compute_wh;
第 4 步:设置可以加载的表¶
数据库是数据的存储库。数据存储在您可以管理和查询的表中。架构是数据库对象(如表和视图)的逻辑分组。例如,架构可能包含特定应用程序所需的数据库对象。有关更多信息,请参阅 数据库、表和视图 – 概览。
要创建可以加载的数据库、架构和表,请执行以下操作:
在打开的工作表中,将光标置于 CREATE OR REPLACE DATABASE 行,输入数据库的名称和可选的注释,然后选择 Run。例如:
CREATE OR REPLACE DATABASE cloud_data_db COMMENT = 'Database for loading cloud data';
将光标置于 CREATE OR REPLACE SCHEMA 行,输入架构的名称和可选的注释,然后选择 Run。例如:
CREATE OR REPLACE SCHEMA cloud_data_db.azure_data COMMENT = 'Schema for tables loaded from Azure';
将光标置于 CREATE OR REPLACE TABLE 行,完成表定义,添加可选注释,然后选择 Run。例如,下表包含六个列:
CREATE OR REPLACE TABLE cloud_data_db.azure_data.calendar ( full_date DATE ,day_name VARCHAR(10) ,month_name VARCHAR(10) ,day_number VARCHAR(2) ,full_year VARCHAR(4) ,holiday BOOLEAN ) COMMENT = 'Table to be loaded from Azure calendar data file';
要确认表已成功创建,请将光标置于 SELECT 行,然后选择 Run。
SELECT * FROM cloud_data_db.azure_data.calendar;
输出将显示您创建的表的列。目前,该表中没有任何行。
第 5 步:创建存储集成¶
在您可以从云存储加载数据之前,您必须配置特定于您的云提供商的存储集成。以下示例特定于 Microsoft Azure 存储。
存储集成是已命名的第一类 Snowflake 对象,无需传递显式云提供商凭据(如密钥或访问令牌)。集成对象会存储一个被称为“应用程序注册”的 Azure Identity and Access Management (IAM) 用户 ID。
要为 Azure 创建存储集成,请执行以下操作:
使用 Azure 门户配置用于加载数据的 Azure 容器。有关详细信息,请参阅 配置 Azure 容器以加载数据。
在打开的工作表中,将光标置于 CREATE OR REPLACE STORAGE INTEGRATION 行,定义所需的参数,然后选择 Run。例如:
CREATE OR REPLACE STORAGE INTEGRATION azure_data_integration TYPE = EXTERNAL_STAGE STORAGE_PROVIDER = 'AZURE' AZURE_TENANT_ID = '075f576e-6f9b-4955-8e99-4086736225d9' ENABLED = TRUE STORAGE_ALLOWED_LOCATIONS = ('azure://tutorial99.blob.core.windows.net/snow-tutorial-container/');
将 AZURE_TENANT_ID 设置为 Office 365 租户 ID,用于包含要使用的受允许存储位置的存储账户。您可以在 Microsoft Entra ID > Properties > Tenant ID 下的 Azure 门户中找到这个 ID。(Microsoft Entra ID 是 Azure AD 的新名称。)
将 STORAGE_ALLOWED_LOCATIONS 设置为添加到存储源数据文件的 Azure 容器的路径。使用此示例中显示的格式,其中
tutorial99
是存储账户名称,snow-tutorial-container
则是容器名称。将光标置于 DESCRIBE INTEGRATION 行,指定您创建的存储集成的名称,然后选择 Run。
DESCRIBE INTEGRATION azure_data_integration;
此命令会检索自动为您的 Snowflake 账户创建的客户端应用程序的 AZURE_CONSENT_URL 和 AZURE_MULTI_TENANT_APP_NAME。您将使用这些值在 Azure 门户中配置 Snowflake 的权限。
此命令的输出类似于以下内容:
将光标置于 SHOW INTEGRATIONS 行并选择 Run。此命令会返回有关您创建的存储集成的信息。
SHOW INTEGRATIONS;
此命令的输出类似于以下内容:
使用 Azure 门户为客户端应用程序(自动为试用账户创建)配置权限以访问存储容器。遵照 配置 Azure 容器以加载数据 下的 第 2 步:授予 Snowflake 对存储位置的访问权限。
第 6 步:创建暂存区¶
暂存区是保存要加载到 Snowflake 数据库的数据文件的位置。本教程会创建一个暂存区,该暂存区可以从特定类型的云存储(例如 Azure 容器)加载数据。
要创建暂存区,请执行以下操作:
在打开的工作表中,将光标置于 CREATE OR REPLACE STAGE 行,指定名称、您创建的存储集成、桶 URL、正确的文件格式,然后选择 Run。例如:
CREATE OR REPLACE STAGE cloud_data_db.azure_data.azuredata_stage STORAGE_INTEGRATION = azure_data_integration URL = 'azure://tutorial99.blob.core.windows.net/snow-tutorial-container/' FILE_FORMAT = (TYPE = CSV);
返回有关您创建的暂存区的信息:
SHOW STAGES;
此命令的输出类似于以下内容:
第 7 步:从暂存区加载数据¶
使用 COPY INTO <table> 命令从您创建的暂存区加载表。有关从 Azure 容器加载的详细信息,请参阅 从 Azure 暂存区复制数据。
要将数据加载到表中,请将光标放在 COPY INTO 行,指定表名称、创建的阶段以及要加载的文件(或文件)的名称,然后选择 Run。例如:
COPY INTO cloud_data_db.azure_data.calendar FROM @cloud_data_db.azure_data.azuredata_stage FILES = ('calendar.txt');
您的输出看起来类似于下图。
第 8 步:查询表¶
现在数据已加载,您可以在 calendar
表上运行查询了。
要在打开的工作表中运行查询,请选择 SELECT 命令的一行或多行,然后选择 Run。例如,运行以下查询:
SELECT * FROM cloud_data_db.azure_data.calendar;
您的输出看起来类似于下图。
第 9 步:清理、总结和其他资源¶
恭喜!您已成功完成此试用账户教程。
请花几分钟时间查看简短的总结和教程中涵盖的要点。您可能还需要考虑删除在教程中创建的任何对象进行清理。例如,您可能希望删除已创建和加载的表:
DROP TABLE calendar;
只要不再需要它们,您还可以删除创建的其他对象,例如存储集成、暂存区、数据库和架构。有关详细信息,请参阅 DDL(数据定义语言)命令。
总结和要点¶
总之,您会使用在 Snowsight 中预先加载的模板工作表来完成以下步骤:
设置要使用的角色和仓库。
创建数据库、架构和表。
创建存储集成并配置云存储的权限。
创建暂存区,并将该暂存区的数据加载到表中。
查询数据。
以下是有关加载和查询数据的一些要点:
您需要所需的权限才能在账户中创建和管理对象。在本教程中,您将使用这些权限的 ACCOUNTADMIN 系统角色。
此角色通常不用于创建对象。相反,我们建议创建与组织中的业务职能保持一致的角色层次结构。有关更多信息,请参阅 使用 ACCOUNTADMIN 角色。
您需要一个存储所需资源的仓库,用于存储创建和管理对象,以及运行 SQL 命令。本教程使用包含在您的试用账户中的
compute_wh
仓库。您创建了一个用于存储数据的数据库和一个用于对数据库对象进行逻辑分组的架构。
您创建了一个存储集成和一个暂存区,用于从存储在 Azure 容器中的 CSV 文件加载数据。
将数据加载到数据库中后,您会使用 SELECT 语句对其进行查询。
下一步是什么?¶
请使用以下资源继续了解 Snowflake :
完成 Snowflake 提供的其他教程:
熟悉 Snowflake 的关键概念和功能,以及用于从云存储加载表的 SQL 命令:
尝试 Snowflake 提供的 Tasty Bytes Quickstarts:
Tasty Bytes Quickstarts (https://quickstarts.snowflake.com/?cat=tasty-bytes)