第一章:开始
云计算的特点是可按需提供数据存储和计算能力。云计算的主要优势在于不需要用户直接或主动参与计算机系统资源的管理。其他优势包括无限的存储容量、自动软件更新、即时可扩展性、高速度和降低成本。正如预期的那样,由AWS Redshift、Google BigQuery和Microsoft Azure Data Warehouse引领的云计算的最近爆炸式增长导致了企业内数据中心的衰退。
许多主要的数据仓库提供商,如Oracle和IBM,最初是作为传统的托管解决方案而创建的,后来适应了云环境。与那些传统解决方案不同,Snowflake是从头开始专门为云环境构建的。虽然Snowflake最初是一种颠覆性的云数据仓库,但它随着时间的推移发展,如今它已经远远超越了创新的现代数据仓库的范畴。
在发展过程中,Snowflake赢得了一些令人瞩目的认可。Snowflake在2015年Strata + Hadoop World创业比赛中获得了第一名,并被Gartner的2015年DBMS魔力象限报告评为“酷炫供应商”。2019年,Snowflake在Forbes杂志的“云100强”榜单上排名第2,在LinkedIn的美国热门创业公司榜单上排名第1。2020年9月16日,Snowflake成为有史以来规模最大的软件首次公开募股(IPO)。
如今,Snowflake数据云平台打破了壁垒,支持许多不同的工作负载。除了传统的数据工程和数据仓库工作负载外,Snowflake还支持数据湖、数据协作、数据分析、数据应用、数据科学、网络安全和Unistore工作负载。Snowflake的“多数据工作负载,一平台”方法为组织提供了一种快速从快速增长的数据集中获得价值的方式,以安全和受控的方式满足合规要求。自成立以来的10年间,Snowflake在数据云领域持续创新,保持了快速的创新步伐。
Snowflake的创始人于2012年首次聚集在一起,他们的愿景是从头开始构建一个面向云端的数据仓库,从庞大的各种类型的数据中释放出无限的洞察力。他们的目标是构建一个安全而强大、经济实惠且易于维护的解决方案。仅仅三年后的2015年,Snowflake的云构建数据仓库正式上市。Snowflake立即以其独特的架构和云无关的方法颠覆了数据仓库市场。这种颠覆性的Snowflake平台还使数据工程更加商业化、少了技术性和耗时,从而为组织内各个层级的用户提供了更多以数据为基础的决策的机会,实现了数据分析的民主化。
要欣赏Snowflake的独特特点和方法,了解其底层架构是很重要的。从第2章开始,贯穿整本书,您将发现Snowflake提供的接近零管理能力,消除了传统数据仓库所涉及的大部分行政和管理开销。每一章都包含您可以自行尝试的SQL示例,让您能够亲自了解Snowflake的工作原理。每章末尾还有知识检测。
一些最具创新性的Snowflake工作负载依赖于Snowflake的安全数据共享功能,该功能于2018年引入。Snowflake安全数据共享使安全和受控的数据几乎可以立即在您的业务生态系统中共享。它还为数据资产的货币化开辟了许多可能性。第10章完全致力于这种创新的Snowflake工作负载。
2021年,Snowflake推出了使用Snowflake组织轻松管理多个账户的能力。管理多个账户使得可以分别维护不同的环境,如开发环境和生产环境,并采用多云策略。这也意味着您可以更好地管理成本,因为您可以为每个独立的账户选择所需的功能。我们将在第5章探讨Snowflake组织管理。
Snowflake还通过在2021年6月推出Snowpark,扩大了数据云的可能范围。在整个行业中,Snowpark被认为是数据工程和机器学习领域的一项创新。Snowpark是一个开发者框架,为云端带来了新的数据可编程性,使开发人员、数据科学家和数据工程师能够使用Java、Scala或Python以无服务器的方式部署代码。
由Snowflake于2022年推出的安全数据湖是一种创新的工作负载,使网络安全和合规团队能够以大规模获取对安全日志的全面可见性,同时降低安全信息和事件管理(SIEM)系统的成本。有趣的是,这种网络安全工作负载可以通过Snowflake数据交换中的网络安全合作伙伴进行增强,这些合作伙伴可以提供威胁检测、威胁搜索、异常检测等功能。我们将在第12章深入探讨Snowpark和安全数据湖工作负载。我们还将在第12章讨论最新的Snowflake工作负载Unistore(用于事务和分析数据)。
本章将向您介绍Snowflake,并使您熟悉Snowsight,即新的Snowflake Web UI。此外,本章还包括关于Snowflake社区、认证和Snowflake活动的信息。还有一个部分介绍了本书中代码示例的注意事项。在本章中花时间适应将有助于您在接下来的章节中取得成功。
Snowflake Web用户界面
提供两种不同的Snowflake Web用户界面:经典控制台(Classic Console)和全新的Snowflake Web UI——Snowsight。Snowsight首次在2021年引入,并成为新创建的Snowflake账户的默认用户界面。预计Snowsight将在2023年初成为所有账户的默认用户界面,而经典控制台将很快停用。除非另有说明,我们所有的实践示例都将在Snowsight中完成。
与所有其他Snowflake功能和功能一样,Snowsight也在不断改进中。因此,在本书的章节中,屏幕截图可能会与您所使用的Snowsight Web用户界面略有不同。
准备工作
在本书的每个章节的准备部分中,我们将创建本章节实践示例所需的任何文件夹、工作表和Snowflake对象。
在阅读本书的过程中,您需要访问Snowflake实例,以便跟随并完成章节中的实践示例。如果您尚未拥有Snowflake实例的访问权限,您可以设置一个免费试用的Snowflake账户。如果您需要了解如何创建免费试用的Snowflake账户的信息,请参考附录C。
如果您可以访问一个默认为经典控制台的Snowflake组织,您可以通过两种方式访问Snowsight。在经典控制台的Web界面中,您可以点击屏幕右上角的Snowsight按钮(如图1-1所示)。或者,您可以直接登录到Snowsight。
一旦进入Snowsight,"Worksheets"是默认的选项卡(如图1-2所示)。您还可以点击其他选项卡,包括"Data"选项卡和"Compute"选项卡,以查看一些可用的菜单选项。正如我们将在后面看到的,"Databases"子选项卡将显示您在访问权限范围内可用的数据库。
如果您之前一直在经典控制台的Web界面中工作,或者这是您第一次登录,当您首次进入Snowsight时,您将有选项可以导入您的工作表(如图1-3所示)。
如果您从经典控制台UI导入一个工作表,将会创建一个新的带有时间戳的文件夹(如图1-4所示)。
您可以使用最新版本的Google Chrome、Mozilla Firefox或适用于macOS的Apple Safari访问Snowsight。登录后,客户端会话将无限期地保持,并随着用户活动的继续而保持。如果连续四小时没有活动,当前会话将被终止,您必须重新登录。默认的会话超时策略为四小时,但可以进行更改;会话策略的最小可配置空闲超时值为五分钟。
Snowsight导览
登录到Snowsight时,您将可以访问用户菜单和主菜单。用户菜单是您可以查看用户名和当前角色的地方。默认情况下,当您首次注册试用账户时,将被分配SYSADMIN角色。
您还会注意到,主菜单默认为Worksheets选项。主菜单选择的右侧区域是您在主菜单选择中的更多选项。在图1-5中,您可以看到主菜单右侧的Worksheets菜单。在Worksheets菜单下方是特定于主菜单选择的子菜单。
接下来,我们将设置Snowsight的偏好设置,并花几分钟浏览Snowsight的Worksheets区域。
Snowsight偏好设置
要设置您的偏好设置,请直接点击您的姓名,或使用姓名旁边的下拉箭头访问子菜单(如图1-6所示)。您会注意到在这里可以切换角色。尝试将角色切换到不同的角色,然后再切换回SYSADMIN角色。在本章的练习中,我们会不时需要在不同的角色之间切换,因此这一点很重要。
您还会注意到,从用户菜单中可以访问Snowflake支持。每当您需要提交一个案例时,只需点击“Support”。需要注意的是,在使用免费试用账户时,您无法创建支持案例。
点击"Profile"选项,将可以访问"Profile"子菜单(如图1-7所示)。在这里,您可以更改首选语言并启用多因素认证(MFA),还可以更改密码。
如果您对个人资料进行了更改,请点击"Save"按钮保存。否则,点击"Close"按钮。
浏览Snowsight Worksheets
在使用Snowsight进行导航和书中的练习时,您会注意到Snowsight启用了自动保存功能。与此相关的一个重要功能是版本历史记录,如果需要,您可以还原到先前的工作表版本。
上下文设置
在我们的示例中,我们将一直设置查询的上下文。要设置上下文,我们需要选择要使用的虚拟仓库(virtual warehouse)以及要用于执行查询的角色。我们还需要选择要用于查询的数据库和模式(schema)。
虚拟仓库、角色和其他Snowflake对象将在接下来的章节中介绍。目前,您只需知道您当前的角色决定了您可以在Snowflake中看到哪些数据以及可以执行哪些操作。当前使用的虚拟仓库是选择运行查询的计算资源。大多数查询(但不是所有查询)需要一个虚拟仓库来执行查询。如果您使用的是Snowflake的试用组织(trial org),您的默认角色是SYSADMIN,而默认的虚拟仓库是COMPUTE_WH。
在为即将进行的查询设置上下文之前,我们将了解当前正在使用的角色和虚拟仓库。为此,我们需要在一个工作表中执行一些SQL查询。让我们创建一个新的文件夹和一个新的工作表,在其中运行我们的查询。在右上角,点击省略号,然后点击"New Folder"(如图1-8所示)。
将新文件夹命名为Chapter1,并点击"Create Folder"按钮(如图1-9所示)。
点击"+ Worksheet"按钮创建一个新的工作表(如图1-10所示)。
一旦你点击了"+ Worksheet"按钮,一个新的工作表就会在Chapter1文件夹中创建。你会注意到工作表的名称默认为当前日期和时间(如图1-11所示),光标位于工作表中等待你的SQL语句。另一个重要的注意事项是没有选择任何数据库。稍后我们将设置数据库的上下文。
在执行任何查询之前,让我们先更改工作表的名称。点击工作表名称旁边的下拉箭头,然后输入一个新的工作表名称"Chapter1 Getting Started"(如图1-12所示)。
你现在已经准备好在Snowsight工作表中输入第一组查询语句了。请输入以下语句:
SELECT CURRENT_ROLE();
SELECT CURRENT_WAREHOUSE();
你的工作表应该看起来像图1-13中显示的那样,其中有两个语句分别位于两行,并且光标位于第3行的开头。这两个SELECT语句只是返回信息,它们不会改变你当前的角色或虚拟数据仓库。
在屏幕的右上角有一个带有蓝色箭头的按钮(如图1-14所示)。从现在开始,我们将称这个按钮为运行按钮,你将点击它来运行工作表中的查询。
确保你的光标在第3行的开头,然后点击运行按钮。你应该会看到当前的虚拟仓库,如图1-15所示。
现在让我们看看如果我们将光标放在工作表的开头,即第1行,然后点击运行按钮会发生什么。结果如图1-16所示。
你会注意到只有第一个查询被执行了。现在让我们尝试另一种执行这些查询的方法。像图1-17中一样,选中两个语句,然后按下Ctrl + Enter键,而不是点击运行按钮。Ctrl + Enter是运行按钮的快捷键。你会注意到两个语句都被执行了。
接下来,让我们找出当前所使用的数据库。执行以下代码:
SELECT CURRENT_DATABASE();
当我们运行上述语句来选择当前数据库时,会返回一个空值。这是因为我们还没有设置数据库的上下文。我们可以通过两种方式来设置数据库的上下文:使用下拉菜单或执行带有USE命令的查询。如果你不确定可以使用哪些数据库,可以使用下拉菜单。下拉菜单将列出您的角色可以访问的所有数据库。这次我们将使用查询方式。当我们开始输入语句时,Snowflake会使用其智能自动完成功能来帮助我们(如图 1-18所示)。
请继续执行以下语句以使用Snowflake示例数据库:
USE DATABASE SNOWFLAKE_SAMPLE_DATA;
当执行该查询后,数据库上下文已更改。您现在可以直接在工作表上看到更改的上下文,在单击下拉菜单时会显示当前数据库(如图 1-19 所示)。它还显示了该数据库中可访问的模式。没有任何模式被突出显示或旁边有复选标记,这意味着尚未选择任何模式。
这次,我们不使用USE命令来设置当前模式,而是从菜单中选择。请继续选择模式TPCDS_SF100TCL(如图1-20所示)。
你会注意到Snowsight的一个特点是,在查询下方和对象列表的右侧有四个按钮。在图1-21中,当前有三个按钮被选中。由于结果和图表不能同时选择,因此四个按钮不能同时选中。
选择"Objects"按钮。现在依次取消选择和重新选择其他三个按钮,观察工作区的变化。"Objects"按钮确定了您在屏幕左侧看到的对象。您可以取消选择"Query"按钮以全屏查看结果,或者取消选择"Results"按钮以全屏查看工作表查询。如果选择"Chart"按钮,则会取消选择"Results"按钮。通过改变Snowsight的显示区域,您可以自定义Snowflake的用户界面。 在下一节中,我们将介绍提高用户生产力的新Snowsight功能。在第11章中,我们将介绍Snowsight图表和仪表板以及一些新的Snowsight协作功能。
提高生产力
如果你一直在使用Snowflake Classic Console的web界面工作,你会对Snowsight带来的许多改进感到满意。Snowsight提供自动上下文建议、脚本版本历史记录、工作表文件夹结构、快捷方式等诸多功能。让我们深入了解其中一些特点。
利用智能自动完成的上下文建议功能
当我们编写查询来设置数据库的上下文时,Snowflake智能自动完成功能为我们提供了上下文建议。实际上,在我们完成数据库名称之前,Snowflake就向我们展示了选择项(如图1-22所示)。如果您开始输入函数名称,Snowflake将为您提供有关所需参数的信息,并链接到Snowflake文档。
格式化SQL
Snowsight提供了将SQL代码整齐格式化的功能。使用下拉菜单选择“格式化查询”,可以使你的SQL查询重新排版,如图1-23所示。
现在,在与他人共享代码或在仪表板协作之前,不再需要花时间整理混乱的代码。"格式化查询"选项会为你处理这个问题。你可以使用"格式化查询"选项在与他人共享SQL代码或进行可视化协作之前清理任何混乱的格式。
使用快捷方式
你会发现Snowsight中有许多快捷命令。点击工作表名称旁边的下拉箭头,然后点击“显示快捷方式”以访问这些命令(如图1-24所示)。
访问版本历史记录
每当在Snowsight工作表中运行SQL语句时,当前工作表都会自动保存。如果一个语句或脚本被多次执行,版本历史记录将会被保留。可以通过访问屏幕右侧的下拉菜单来查看各个版本,该菜单显示了工作表的最后更新时间(如图1-25所示)。
在接下来的章节中,我会介绍其他Snowsight的功能。当你准备返回到主菜单时,只需点击屏幕左上角的房子图标(如图1-26所示)。
Snowflake社区
本书将教你有关Snowflake架构以及如何使用Snowflake的知识和技巧。书中提供了全面的信息和教程,但你可能对某个特定主题有疑问。因此,我鼓励你加入并参与Snowflake社区。
如果你想与其他对Snowflake有相同热情的人建立联系,可以考虑加入用户群组。一些用户群组在北美、欧洲、中东和亚太地区会举办线下活动。你可以在Snowflake的网站上找到更多关于用户群组的信息。此外,还有虚拟的特殊兴趣群组(请参考图1-27),除了区域性的用户群组。我负责管理数据协作特殊兴趣群组。
Snowflake用户群组只是你参与Snowflake社区的一种方式。在Snowflake社区登录页面上,还有社区群组、资源链接和讨论等资源可供访问。要访问这些群组和资源,请点击页面右上角的“登录”按钮,然后点击“还不是会员?”链接以创建你的免费Snowflake社区会员账户。
Snowflake还有一个特殊的数据超级英雄计划,针对在社区中高度活跃的Snowflake专家。每个被认可为数据超级英雄的人都会获得由Snowflake的企业活动总监Francis Mao设计的定制数据超级英雄形象。图1-28展示了一些Snowflake数据超级英雄的聚会,包括我在内!
Snowflake认证考试
随着你在本书中的学习进展,你会发现你的Snowflake知识将迅速增长。在某个时候,你可能想考取Snowflake认证,以向社区展示你的知识。
所有的Snowflake认证路径都始于SnowPro Core认证考试。通过SnowPro考试,你将有资格参加五个基于角色的高级认证考试,包括管理员、架构师、数据分析师、数据工程师和数据科学家。Snowflake证书的有效期为两年,过期后需要通过重新认证考试。通过任何高级Snowflake认证考试都会重新启动SnowPro Core认证的计时器,因此你还有两年的时间进行重新认证。关于Snowflake认证的更多信息可以在他们的网站上找到。