使用 SQL 加载和查询示例数据

简介

本教程使用一个名为 Tasty Bytes 的虚构食品卡车品牌来向您展示如何使用 SQL 在 Snowflake 中加载和查询数据。您将在 Snowsight 中使用预加载的工作表以完成这些任务。

下图提供了 Tasty Bytes 的概述。

包含 Tasty Bytes 的概述,该公司是一个全球食品卡车网络,拥有 15 个品牌的本地化食品卡车选项,可供多个国家和城市选择。该图像描述了公司的使命、愿景、所在位置、当前状态和未来目标。

备注

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

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

您将学习的内容

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

  • 使用角色,从授予的权限中获取对功能的访问权限。

  • 使用仓库访问资源。

  • 创建数据库和架构。

  • 创建表。

  • 将数据加载到表中。

  • 查询表中的数据。

先决条件

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

  • 您拥有 支持的浏览器

  • 您拥有试用账户。如果您还没有试用账户,可以注册一个 免费试用账户 (https://signup.snowflake.com/)。您可以选择任意 Snowflake 云区域

  • 您的用户是账户管理员,并被授予 ACCOUNTADMIN 系统角色。有关更多信息,请参阅 使用 ACCOUNTADMIN 角色

备注

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

第 1 步:使用 Snowsight 登录

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

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

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

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

第 2 步:打开用于加载和查询数据的 SQL 工作表

您可以使用工作表来编写和运行 Snowflake 数据库上的 SQL 命令。您的试用账户有权访问本教程的预加载工作表。该工作表具有 SQL 命令,可运行以创建数据库、加载数据至数据库和查询数据。有关工作表的更多信息,请参阅 工作表入门

要打开预加载的教程工作表,请执行以下操作:

  1. 选择 Projects » Worksheets 以打开工作表列表。

  2. 打开 [Tutorial] Using SQL to load and query sample data

    您的工作表看起来类似于下图。

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 步:创建数据库、架构和表

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

在本教程中,您将创建一个名为 tasty_bytes_sample_data 的数据库、一个名为 raw_pos 的架构和一个名为 menu 的表。

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

  1. 在打开的工作表中,将光标置于 CREATE OR REPLACE DATABASE 行,然后选择 Run

    CREATE OR REPLACE DATABASE tasty_bytes_sample_data;
    
    Copy
  2. 将光标置于 CREATE OR REPLACE SCHEMA 行,然后选择 Run

    CREATE OR REPLACE SCHEMA tasty_bytes_sample_data.raw_pos;
    
    Copy
  3. 将光标置于 CREATE OR REPLACE TABLE 行,然后选择 Run

    CREATE OR REPLACE TABLE tasty_bytes_sample_data.raw_pos.menu
    (
        menu_id NUMBER(19,0),
        menu_type_id NUMBER(38,0),
        menu_type VARCHAR(16777216),
        truck_brand_name VARCHAR(16777216),
        menu_item_id NUMBER(38,0),
        menu_item_name VARCHAR(16777216),
        item_category VARCHAR(16777216),
        item_subcategory VARCHAR(16777216),
        cost_of_goods_usd NUMBER(38,4),
        sale_price_usd NUMBER(38,4),
        menu_item_health_metrics_obj VARIANT
    );
    
    Copy
  4. 要确认表已成功创建,请将光标置于 SELECT 行,然后选择 Run

    SELECT * FROM tasty_bytes_sample_data.raw_pos.menu;
    
    Copy

    输出将显示您创建的表的列。在本教程的当前时间,该表没有任何行。

第 5 步:创建暂存区并加载数据

暂存区是保存要加载到 Snowflake 数据库的数据文件的位置。本教程会创建一个从 Amazon S3 桶加载数据的暂存区。本教程使用现有的桶,其中具有包含数据的 CSV 文件。您可以从该 CSV 文件中加载数据,添加到您之前创建的表中。有关信息,请参阅 从 Amazon S3 批量加载

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

  1. 在打开的工作表中,将光标置于 CREATE OR REPLACE STAGE 行,然后选择 Run

    CREATE OR REPLACE STAGE tasty_bytes_sample_data.public.blob_stage
    url = 's3://sfquickstarts/tastybytes/'
    file_format = (type = csv);
    
    Copy
  2. 要确认暂存区已成功创建,请将光标置于 LIST 行,然后选择 Run

    LIST @tasty_bytes_sample_data.public.blob_stage/raw_pos/menu/;
    
    Copy

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

    包含以下列的表输出:name、size、md5、last_modified。显示暂存区详细信息的一行。
  3. 要将数据加载到表中,请将光标放在 COPY INTO 行,然后选择 Run

    COPY INTO tasty_bytes_sample_data.raw_pos.menu
    FROM @tasty_bytes_sample_data.public.blob_stage/raw_pos/menu/;
    
    Copy

第 6 步:查询数据

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

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

例如,要返回表中的行数,请运行以下查询:

SELECT COUNT(*) AS row_count FROM tasty_bytes_sample_data.raw_pos.menu;
Copy

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

包含以下列的表输出:ROW_COUNT。具有以下值的一行:100。

运行此查询以返回表中的前十行:

SELECT TOP 10 * FROM tasty_bytes_sample_data.raw_pos.menu;
Copy

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

包含以下列的表输出:MENU_ID、MENU_TYPE_ID、MENU_TYPE、TRUCK_BRAND_NAME、MENU_ITEM_ID、MENU_ITEM_NAME。第一行具有以下值:10001、1、Ice Cream、Freezing Point、10、Lemonade。

有关运行返回指定行数的查询的更多信息,请参阅 TOP <n>

您可以在工作表中运行其他查询来浏览 menu 表中的数据。

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

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

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

清理教程对象(可选)

如果不再需要您在本教程中创建的对象,可以使用 DROP <object> 命令将它们从系统中删除。要删除创建的数据库,请运行以下命令:

DROP DATABASE IF EXISTS tasty_bytes_sample_data;
Copy

总结和要点

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

  1. 设置角色和仓库的环境。

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

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

  4. 查询数据。

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

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

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

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

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

  • 您创建了一个暂存区来加载 CSV 文件中的数据。

  • 将数据加载到数据库后,您可以使用 SELECT 语句查询数据。

下一步是什么?

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

语言: 中文