从云存储加载数据:GCS

简介

本教程向您展示如何使用 SQL 将数据从云存储加载到 Snowflake 中。您将在 Snowsight 中使用模板工作表以完成这些任务。您可以选择要使用的云提供商:AWS S3、Microsoft Azure 或 Google Cloud Storage (GCS)。该工作表包含自定义的 SQL 命令,用于与每种存储类型兼容。

注意

本教程中提供的示例特定于 GCS,并显示用于从 GCS 桶加载数据的 SQL 命令。

备注

Snowflake 对本教程中示例数据使用的磁盘存储收取最低费用。本教程提供删除数据库并最大程度地降低存储成本的步骤。

Snowflake 需要一个 虚拟仓库 加载数据并执行查询。正在运行的虚拟仓库会使用 Snowflake Credit。在本教程中,您将使用 30 天试用账户 (https://signup.snowflake.com/),该账户提供免费 Credit,您无需支付任何费用。

您将学习的内容

在本教程中,您将学习如何:

  • 使用具有创建和使用本教程所需的 Snowflake 对象的权限的角色。

  • 使用仓库访问资源。

  • 创建数据库和架构。

  • 创建表。

  • 为您的云平台创建存储集成。

  • 为您的存储集成创建暂存区。

  • 将数据从暂存区加载到表中。

  • 查询表中的数据。

先决条件

本教程假定满足以下条件:

备注

本教程仅适用于拥有试用账户的用户。示例工作表不适用于其他类型的账户。

第 1 步:使用 Snowsight 登录

要通过公共互联网访问 Snowsight,请执行以下操作:

  1. 在支持的 Web 浏览器中,导航至 https://app.snowflake.cn

  2. 提供 账户标识符 或账户 URL。如果您之前登录过 Snowsight,可能会看到一个可以选择的账户名称。

  3. 使用 Snowflake 账户凭据登录。

第 2 步:打开 Load data from cloud storage 工作表

您可以使用工作表来编写和运行数据库上的 SQL 命令。您的试用账户有权访问本教程的模板工作表。该工作表具有 SQL 命令,可运行以创建数据库对象、加载数据和查询数据。因为它是一个模板工作表,所以系统将邀请您为特定的 SQL 参数输入自己的值。有关工作表的更多信息,请参阅 工作表入门

本教程的工作表未预加载到试用账户中。要打开本教程的工作表,请执行以下操作:

  1. 如果您是首次登录到 Snowsight 试用账户,请在 Where do you want to start? 屏幕上的 Load data into Snowflake 下选择 Start

    如果您已离开 Where do you want to start? 屏幕,请转到 Worksheets 选项卡,然后选择横幅中的 Continue

  2. 在中间名为 Load data from cloud storage 的面板上点击任意位置。

    [Template] Load data from cloud storage worksheet 会打开,您的浏览器显示的内容与下图类似。

从云模板工作表加载的 SQL,其中包含本教程的 SQL 命令,以及描述性注释。

第 3 步:设置要使用的角色和仓库

您使用的角色决定了您拥有的权限。在本教程中,使用 ACCOUNTADMIN 系统角色,以便您查看和管理账户中的对象。有关更多信息,请参阅 使用 ACCOUNTADMIN 角色

仓库提供创建和管理对象以及运行 SQL 命令所需的资源。这些资源包括 CPU、内存和临时存储。您的试用账户拥有一个虚拟仓库 (compute_wh),可用于本教程。有关更多信息,请参阅 虚拟仓库

要设置要使用的角色和仓库,请执行以下操作:

  1. 在打开的工作表中,将光标置于 USE ROLE 行。

    USE ROLE accountadmin;
    
    Copy
  2. 在工作表的右上角,选择 Run

    备注

    在本教程中,每次运行一个 SQL 语句。不要选择 Run All

  3. 将光标置于 USE WAREHOUSE 行,然后选择 Run

    USE WAREHOUSE compute_wh;
    
    Copy

第 4 步:创建数据库、架构和表

数据库是数据的存储库。数据存储在您可以管理和查询的表中。架构是数据库对象(如表和视图)的逻辑分组。例如,架构可能包含特定应用程序所需的数据库对象。有关更多信息,请参阅 数据库、表和视图 – 概览

要创建数据库、架构和表,请执行以下操作:

  1. 在打开的工作表中,将光标置于 CREATE OR REPLACE DATABASE 行,输入数据库的名称和可选的注释,然后选择 Run。例如:

    CREATE OR REPLACE DATABASE cloud_data_db
      COMMENT = 'Database for loading cloud data';
    
    Copy
  2. 将光标置于 CREATE OR REPLACE SCHEMA 行,输入架构的名称和可选的注释,然后选择 Run。例如:

    CREATE OR REPLACE SCHEMA cloud_data_db.gcs_data
      COMMENT = 'Schema for tables loaded from GCS';
    
    Copy
  3. 将光标置于 CREATE OR REPLACE TABLE 行,完成表定义,添加可选注释,然后选择 Run。例如,下表包含六个列:

    CREATE OR REPLACE TABLE cloud_data_db.gcs_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 GCS calendar data file';
    
    Copy
  4. 要确认表已成功创建,请将光标置于 SELECT 行,然后选择 Run

    SELECT * FROM cloud_data_db.gcs_data.calendar;
    
    Copy

    输出将显示您创建的表的列。目前,该表中没有任何行。

第 5 步:创建存储集成

在您可以从云存储加载数据之前,您必须配置特定于您的云提供商的存储集成。以下示例特定于 GCS。

存储集成是命名的一类 Snowflake 对象,无需传递显式云提供商凭据,例如密钥或访问令牌;相反,集成对象会引用 GCS 服务账户。

要为 GCS 创建存储集成,请执行以下操作:

  1. 在打开的工作表中,将光标置于 CREATE OR REPLACE STORAGE INTEGRATION 行,定义所需的参数,然后选择 Run。例如:

    CREATE OR REPLACE STORAGE INTEGRATION gcs_data_integration
      TYPE = EXTERNAL_STAGE
      STORAGE_PROVIDER = 'GCS'
      ENABLED = TRUE
      STORAGE_ALLOWED_LOCATIONS = ('gcs://tutorial24bucket/gcsdata/');
    
    Copy
  2. 将光标置于 DESCRIBE INTEGRATION 行,指定您创建的存储集成的名称,然后选择 Run。此命令会返回有关您创建的存储集成的信息,包括为您的 Snowflake 账户自动创建的服务账户 ID (STORAGE_GCP_SERVICE_ACCOUNT)。您将使用此值在 GCS 控制台中中配置 Snowflake 的权限。

    DESCRIBE INTEGRATION gcs_data_integration;
    
    Copy

    此命令的输出类似于以下内容:

    DESCRIBE INTEGRATION 命令的输出,包含以下列:property、property_type、property_value、property_default。
  3. 将光标置于 SHOW INTEGRATIONS 行并选择 Run

    SHOW INTEGRATIONS;
    
    Copy

    此命令的输出类似于以下内容:

    SHOW INTEGRATIONS 命令的输出,包含以下列:name、type、category、enabled、comment、created_on。
  4. 使用 GCS 控制台,用于配置通过您的 Cloud Storage Service 账户访问存储桶的权限。遵照 配置 Google Cloud Storage 集成 下的第 3 步操作。

第 6 步:创建暂存区

暂存区是保存要加载到 Snowflake 数据库的数据文件的位置。本教程会创建一个暂存区,该暂存区可以从特定类型的云存储(例如 GCS 桶)加载数据。

要创建暂存区,请执行以下操作:

  1. 在打开的工作表中,将光标置于 CREATE OR REPLACE STAGE 行,指定名称、您创建的存储集成、桶 URL、正确的文件格式,然后选择 Run。例如:

    CREATE OR REPLACE STAGE cloud_data_db.gcs_data.gcsdata_stage
      STORAGE_INTEGRATION = gcs_data_integration
      URL = 'gcs://tutorial24bucket/gcsdata/'
      FILE_FORMAT = (TYPE = CSV);
    
    Copy
  2. 返回有关您创建的暂存区的信息:

    SHOW STAGES;
    
    Copy

    此命令的输出类似于以下内容:

     SHOW STAGES 命令的输出

第 7 步:从暂存区加载数据

使用 COPY INTO <table> 命令从您创建的暂存区加载表。有关从 GCS 桶加载的详细信息,请参阅 从 Google Cloud Storage 暂存区复制数据

要将数据加载到表中,请将光标放在 COPY INTO 行,指定表名称、创建的阶段以及要加载的文件(或文件)的名称,然后选择 Run。例如:

COPY INTO cloud_data_db.gcs_data.calendar
  FROM @cloud_data_db.gcs_data.gcsdata_stage
    FILES = ('calendar.txt');
Copy

您的输出看起来类似于下图。

将五行复制到表中。

第 8 步:查询表

现在数据已加载,您可以在 calendar 表上运行查询了。

要在打开的工作表中运行查询,请选择 SELECT 命令的一行或多行,然后选择 Run。例如,运行以下查询:

SELECT * FROM cloud_data_db.gcs_data.calendar;
Copy

您的输出看起来类似于下图。

选择表中的所有行。

第 9 步:清理、总结和其他资源

恭喜!您已成功完成此试用账户教程。

请花几分钟时间查看简短的总结和教程中涵盖的要点。您可能还需要考虑删除在教程中创建的任何对象进行清理。通过查看 Snowflake 文档中的其他主题了解更多信息。

总结和要点

总之,您会使用在 Snowsight 中预先加载的模板工作表来完成以下步骤:

  1. 设置要使用的角色和仓库。

  2. 创建数据库、架构和表。

  3. 创建存储集成并配置云存储的权限。

  4. 创建暂存区,并将该暂存区的数据加载到表中。

  5. 查询数据。

以下是有关加载和查询数据的一些要点:

  • 您需要所需的权限才能在账户中创建和管理对象。在本教程中,您将使用这些权限的 ACCOUNTADMIN 系统角色。

    此角色通常不用于创建对象。相反,我们建议创建与组织中的业务职能保持一致的角色层次结构。有关更多信息,请参阅 使用 ACCOUNTADMIN 角色

  • 您需要一个存储所需资源的仓库,用于存储创建和管理对象,以及运行 SQL 命令。本教程使用包含在您的试用账户中的 compute_wh 仓库。

  • 您创建了一个用于存储数据的数据库和一个用于对数据库对象进行逻辑分组的架构。

  • 您创建了一个存储集成和一个暂存区,用于从存储在 GCS 桶中的 CSV 文件加载数据。

  • 将数据加载到数据库中后,您会使用 SELECT 语句对其进行查询。

下一步是什么?

请使用以下资源继续了解 Snowflake :

语言: 中文