连接到dbt核心gydF4y2Ba

请注意gydF4y2Ba

本文涵盖了gydF4y2Ba印度生物技术部核心gydF4y2Ba,一个版本的gydF4y2Ba印度生物技术部gydF4y2Ba用于与Databricks SQL交互的本地开发机器gydF4y2Ba仓库gydF4y2Ba和砖gydF4y2Ba集群gydF4y2Ba在你的Databricks工作区内。要使用dbt的托管版本(称为gydF4y2Ba印度生物技术部的云gydF4y2Ba)代替,或者使用gydF4y2Ba合作伙伴联系gydF4y2Ba如何在工作空间内快速创建SQL仓库,然后将其连接到dbt Cloud,请参见gydF4y2Ba连接dbt CloudgydF4y2Ba.gydF4y2Ba

印度生物技术部gydF4y2Ba(数据构建工具)是一个开发环境,允许数据分析师和数据工程师通过简单地编写选择语句来转换数据。DBT处理将这些选择语句转换为表和视图。dbt将代码编译为原始SQL,然后在Databricks中的指定数据库上运行该代码。DBT支持协作编码模式和最佳实践,如版本控制、文档、模块化等。有关更多信息,请参见gydF4y2Badbt到底是什么?gydF4y2Ba而且gydF4y2Ba面向所有人的分析工程:dbt云中的数据gydF4y2Ba在DBT网站上。gydF4y2Ba

DBT不提取或加载数据。DBT只关注转换步骤,使用“加载后转换”体系结构。DBT假设您的数据库中已经有了数据的副本。gydF4y2Ba

本文主要介绍如何使用dbt Core。dbt Core使您能够在本地开发机器上的文本编辑器或IDE中编写dbt代码,然后从命令行运行dbt。dbt Core包括dbt CLI (Command Line Interface)。的gydF4y2Ba印度生物技术部CLIgydF4y2Ba是免费使用和gydF4y2Babob下载地址.gydF4y2Ba

dbt的托管版本dbt Cloud也可用。dbt Cloud配备了调度作业、CI/CD、服务文档、监控和警报以及集成开发环境(IDE)的交钥匙支持。有关更多信息,请参见gydF4y2Ba连接dbt CloudgydF4y2Ba.dbt云开发人员计划提供一个免费的开发人员席位;团队和企业付费计划也可用。有关更多信息,请参见gydF4y2Ba印度生物技术部的定价gydF4y2Ba在DBT网站上。gydF4y2Ba

因为dbt Core和dbt Cloud可以使用托管的git存储库(例如,在GitHub, GitLab或BitBucket上),你可以使用dbt Core创建一个dbt项目,然后让它对你的dbt Cloud用户可用。有关更多信息,请参见gydF4y2Ba创建dbt项目gydF4y2Ba而且gydF4y2Ba使用现有项目gydF4y2Ba在DBT网站上。gydF4y2Ba

要了解dbt的一般概况,请观看以下YouTube视频(26分钟)。gydF4y2Ba

需求gydF4y2Ba

在安装dbt Core之前,您必须在本地开发机器上安装以下软件:gydF4y2Ba

步骤1:创建并激活Python虚拟环境gydF4y2Ba

在这一步中,您使用gydF4y2BapipenvgydF4y2Ba要创建gydF4y2BaPython虚拟环境gydF4y2Ba.我们建议使用Python虚拟环境,因为它将包版本和代码依赖关系隔离到特定的环境中,而不管其他环境中的包版本和代码依赖关系如何。这有助于减少意外的包版本不匹配和代码依赖冲突。gydF4y2Ba

  1. 从终端切换到一个空目录,如果有必要,首先创建该目录。此过程创建一个名为gydF4y2Badbt_demogydF4y2Ba在用户主目录的根目录中。gydF4y2Ba

    mkdir ~ / dbt_demogydF4y2BacdgydF4y2Ba~ / dbt_demogydF4y2Ba
    mkdir % USERPROFILE %gydF4y2Ba\ dgydF4y2Babt_demogydF4y2BacdgydF4y2Ba% USERPROFILE %gydF4y2Ba\ dgydF4y2Babt_demogydF4y2Ba
  2. 在这个空目录中,创建一个名为gydF4y2BaPipfilegydF4y2Ba附有以下内容。这gydF4y2BaPipfilegydF4y2Ba指示gydF4y2BapipenvgydF4y2Ba使用Python 3.8.6版本。如果使用不同的版本,请替换gydF4y2Ba3.8.6gydF4y2Ba你的版本号。gydF4y2Ba

    [[source]] url = "https://pypi.org/simple" verify_ssl = true name = "pypi" [packages] dbt-databricks = "*" [requires] python_version = "3.8.6"gydF4y2Ba

    请注意gydF4y2Ba

    前一行gydF4y2Badbt-databricksgydF4y2Ba=gydF4y2Ba“*”gydF4y2Ba指示gydF4y2BapipenvgydF4y2Ba的最新版本gydF4y2Badbt-databricksgydF4y2Ba包中。在生产场景中,您应该替换gydF4y2Ba*gydF4y2Ba使用您想要使用的包的特定版本。看到gydF4y2Badbt-databricks发布历史gydF4y2BaPython包索引(PyPI)网站。gydF4y2Ba

  3. 运行命令在此目录下创建Python虚拟环境gydF4y2BapipenvgydF4y2Ba并指定要使用的Python版本。此命令指定Python版本为3.8.6。如果使用不同的版本,请替换gydF4y2Ba3.8.6gydF4y2Ba你的版本号:gydF4y2Ba

    python pipenv——gydF4y2Ba3.gydF4y2Ba.8.6gydF4y2Ba
  4. 运行命令安装dbt Databricks适配器gydF4y2BapipenvgydF4y2Ba与gydF4y2Ba安装gydF4y2Ba选择。这将在您的gydF4y2BaPipfilegydF4y2Ba,其中包括dbt Databricks适配器包,gydF4y2Badbt-databricksgydF4y2Ba,来自PyPI。dbt Databricks适配器包自动安装dbt Core和其他依赖项。gydF4y2Ba

    重要的gydF4y2Ba

    如果您的本地开发机器使用以下任何操作系统,则必须先完成附加步骤:CentOS、MacOS、Ubuntu、Debian和Windows。的“我的操作系统是否具有先决条件”部分gydF4y2Ba使用pip安装dbtgydF4y2Ba在dbt实验室网站上。gydF4y2Ba

    pipenv安装gydF4y2Ba
  5. 通过运行来激活这个虚拟环境gydF4y2BapipenvgydF4y2Ba壳牌gydF4y2Ba.为了确认激活,终端显示gydF4y2Ba(dbt_demo)gydF4y2Ba在提示符之前。虚拟环境开始使用指定版本的Python,并在这个新环境中隔离所有包版本和代码依赖项。gydF4y2Ba

    pipenv壳gydF4y2Ba

    请注意gydF4y2Ba

    要停用此虚拟环境,请运行gydF4y2Ba退出gydF4y2Ba.gydF4y2Ba(dbt_demo)gydF4y2Ba从提示符前消失。如果你跑了gydF4y2BapythongydF4y2Ba——版本gydF4y2Ba或gydF4y2Ba皮普gydF4y2Ba列表gydF4y2Ba禁用了这个虚拟环境后,您可能会看到不同版本的Python、不同的可用包列表或包版本,或者两者都有。gydF4y2Ba

  6. 通过运行,确认虚拟环境正在运行预期的Python版本gydF4y2BapythongydF4y2Ba与gydF4y2Ba——版本gydF4y2Ba选择。gydF4y2Ba

    python的版本gydF4y2Ba

    如果显示的Python版本超出预期,请确保已通过运行激活虚拟环境gydF4y2BapipenvgydF4y2Ba壳牌gydF4y2Ba.gydF4y2Ba

  7. 通过运行dbt Databricks适配器,确认您的虚拟环境正在运行dbt的预期版本gydF4y2Ba印度生物技术部gydF4y2Ba与gydF4y2Ba——版本gydF4y2Ba选择。gydF4y2Ba

    印度生物技术部——版本gydF4y2Ba

    如果显示dbt或dbt Databricks适配器的意外版本,请确保您已经通过运行激活了虚拟环境gydF4y2BapipenvgydF4y2Ba壳牌gydF4y2Ba.如果仍然显示一个意外的版本,请在激活虚拟环境后尝试重新安装dbt或dbt Databricks适配器。gydF4y2Ba

步骤2:创建dbt项目并指定和测试连接设置gydF4y2Ba

在这一步中,您将创建一个dbtgydF4y2Ba项目gydF4y2Ba,它是使用dbt所需的相关目录和文件的集合。然后配置连接gydF4y2Ba配置文件gydF4y2Ba,其中包含到数据库的连接设置gydF4y2Ba集群gydF4y2Ba,一个gydF4y2BaSQL仓库gydF4y2Ba,或者两者都有。为了提高安全性,dbt项目和概要文件默认存储在不同的位置。gydF4y2Ba

提示gydF4y2Ba

您可以连接到现有的集群或SQL仓库,也可以创建新的集群或SQL仓库。gydF4y2Ba

  • 现有的集群或SQL仓库对于多个dbt项目、在团队中使用dbt或开发用例都是有效的。gydF4y2Ba

  • 新的集群或SQL仓库允许您为生产用例单独运行单个dbt项目,以及在dbt项目未运行时利用自动终止来节省成本。gydF4y2Ba

使用Databricks创建一个新的集群或SQL仓库,然后从dbt配置文件引用新创建的或现有的集群或SQL仓库。gydF4y2Ba

  1. 在虚拟环境仍然激活的情况下,运行gydF4y2Ba印度生物技术部initgydF4y2Ba命令,并为项目指定名称。此过程创建名为gydF4y2Bamy_dbt_demogydF4y2Ba.gydF4y2Ba

    DBT init my_dbt_demogydF4y2Ba
  2. 当系统提示是否使用gydF4y2Ba砖gydF4y2Ba或gydF4y2Ba火花gydF4y2Ba数据库,输入对应的数字gydF4y2Ba砖gydF4y2Ba.gydF4y2Ba

  3. 当提示输入gydF4y2Ba宿主gydF4y2Ba值:gydF4y2Ba

    • 对于集群,输入gydF4y2Ba服务器主机名gydF4y2Ba的值。gydF4y2Ba高级选项,JDBC/ODBCgydF4y2Ba选项卡为Databricks集群设置。gydF4y2Ba

    • 对于SQL仓库,输入gydF4y2Ba服务器主机名gydF4y2Ba的值。gydF4y2Ba连接细节gydF4y2Ba选项卡为您的SQL仓库。gydF4y2Ba

  4. 当提示输入gydF4y2Bahttp_pathgydF4y2Ba值:gydF4y2Ba

    • 对于集群,输入gydF4y2BaHTTP路径gydF4y2Ba的值。gydF4y2Ba高级选项,JDBC/ODBCgydF4y2Ba选项卡为Databricks集群设置。gydF4y2Ba

    • 对于SQL仓库,输入gydF4y2BaHTTP路径gydF4y2Ba的值。gydF4y2Ba连接细节gydF4y2Ba选项卡为您的SQL仓库。gydF4y2Ba

  5. 当提示输入gydF4y2Ba令牌gydF4y2Ba,输入“数据库”的值gydF4y2Ba个人访问令牌gydF4y2Ba.gydF4y2Ba

    请注意gydF4y2Ba

    作为安全最佳实践,当使用自动化工具、系统、脚本和应用程序进行身份验证时,Databricks建议您使用属于的访问令牌gydF4y2Ba服务主体gydF4y2Ba而不是工作区用户。要为服务主体创建访问令牌,请参见gydF4y2Ba管理服务主体的访问令牌gydF4y2Ba.gydF4y2Ba

  6. 当提示输入gydF4y2Ba想要的gydF4y2Ba团结gydF4y2Ba目录gydF4y2Ba选项gydF4y2Ba值,输入对应的数字gydF4y2Ba使用gydF4y2Ba团结gydF4y2Ba目录gydF4y2Ba或gydF4y2Ba不gydF4y2Ba使用gydF4y2Ba团结gydF4y2Ba目录gydF4y2Ba.gydF4y2Ba

  7. 如果您选择使用Unity Catalog,请输入所需的值gydF4y2Ba目录gydF4y2Ba当提示。gydF4y2Ba

  8. 输入所需的值gydF4y2Ba模式gydF4y2Ba而且gydF4y2Ba线程gydF4y2Ba当提示。gydF4y2Ba

  9. DBT将您的条目写入到gydF4y2Baprofiles.ymlgydF4y2Ba文件。方法的输出中列出了该文件的位置gydF4y2Ba印度生物技术部gydF4y2Ba初始化gydF4y2Ba命令。命令还可以在稍后列出此位置gydF4y2Ba印度生物技术部gydF4y2Ba调试gydF4y2Ba——config-dirgydF4y2Ba命令。您现在可以打开这个文件来检查和验证它的内容。gydF4y2Ba

  10. 运行命令确认连接详细信息是否正确gydF4y2Ba印度生物技术部gydF4y2Ba调试gydF4y2Ba命令。gydF4y2Ba

    重要的gydF4y2Ba

    确保您的集群或SQL仓库首先运行。gydF4y2Ba

    您应该会看到类似如下的输出:gydF4y2Ba

    印度生物技术部调试gydF4y2Ba
    ...gydF4y2Ba配置:gydF4y2Baprofiles.ymlfile [OK found and valid]dbt_project。yml文件[OK found and valid]gydF4y2Ba所需的依赖项:gydF4y2Ba- git [OK found]gydF4y2Ba连接:gydF4y2Ba...gydF4y2Ba连接测试:连接正常gydF4y2Ba

步骤3:创建并运行模型gydF4y2Ba

在这一步中,使用您最喜欢的文本编辑器来创建gydF4y2Ba模型gydF4y2Ba,分别是gydF4y2Ba选择gydF4y2Ba基于同一数据库中的现有数据在数据库中创建新视图(默认值)或新表的语句。这个过程基于样本创建一个模型gydF4y2Ba钻石gydF4y2Ba表中的gydF4y2Ba样本数据集gydF4y2Ba,详见gydF4y2Ba创建表gydF4y2Ba的部分gydF4y2Ba教程:使用笔记本查询数据gydF4y2Ba.此过程假设已经在您的工作区中创建了此表gydF4y2Ba默认的gydF4y2Ba数据库。gydF4y2Ba

  1. 在项目的gydF4y2Ba模型gydF4y2Ba目录,创建一个名为gydF4y2Badiamonds_four_cs.sqlgydF4y2Ba使用下面的SQL语句。此语句仅从列表中选择每颗钻石的克拉、切工、颜色和净度细节gydF4y2Ba钻石gydF4y2Ba表格的gydF4y2Ba配置gydF4y2BaBlock指示DBT根据这条语句在数据库中创建一个表。gydF4y2Ba

    {{gydF4y2Ba配置gydF4y2Ba(gydF4y2Ba物化gydF4y2Ba=gydF4y2Ba“表”gydF4y2Ba,gydF4y2Bafile_formatgydF4y2Ba=gydF4y2Ba“δ”gydF4y2Ba)gydF4y2Ba}}gydF4y2Ba
    选择gydF4y2Ba克拉gydF4y2Ba,gydF4y2Ba减少gydF4y2Ba,gydF4y2Ba颜色gydF4y2Ba,gydF4y2Ba清晰gydF4y2Ba从gydF4y2Ba钻石gydF4y2Ba

    提示gydF4y2Ba

    额外的gydF4y2Ba配置gydF4y2Ba选项,例如使用Delta文件格式和gydF4y2Ba合并gydF4y2Ba增量策略,请参见gydF4y2BaApache Spark配置gydF4y2Ba的“模型配置”和“增量模型”部分gydF4y2Ba使用笔记gydF4y2Ba在GitHub的dbt-labs/dbt-spark存储库中。gydF4y2Ba

  2. 在项目的gydF4y2Ba模型gydF4y2Ba目录,创建第二个名为gydF4y2Badiamonds_list_colors.sqlgydF4y2Ba使用下面的SQL语句。属性中的惟一值gydF4y2Ba颜色gydF4y2Ba中的列。gydF4y2Badiamonds_four_csgydF4y2Ba表,排序结果在字母顺序从第一到最后。因为没有gydF4y2Ba配置gydF4y2Ba块,此模型指示DBT根据此语句在数据库中创建视图。gydF4y2Ba

    从{{ref('diamonds_four_cs')}}中选择不同颜色,按颜色asc排序gydF4y2Ba
  3. 在项目的gydF4y2Ba模型gydF4y2Ba目录,创建第三个名为gydF4y2Badiamonds_prices.sqlgydF4y2Ba使用下面的SQL语句。这个表按钻石颜色平均钻石价格,按平均价格从高到低排序。这个模型指示dbt根据这条语句在数据库中创建一个视图。gydF4y2Ba

    选择gydF4y2Ba颜色gydF4y2Ba,gydF4y2BaavggydF4y2Ba(gydF4y2Ba价格gydF4y2Ba)gydF4y2Ba作为gydF4y2Ba价格gydF4y2Ba从gydF4y2Ba钻石gydF4y2Ba集团gydF4y2Ba通过gydF4y2Ba颜色gydF4y2Ba订单gydF4y2Ba通过gydF4y2Ba价格gydF4y2BadescgydF4y2Ba
  4. 激活虚拟环境后,运行gydF4y2Ba印度生物技术部gydF4y2Ba运行gydF4y2Ba命令,使用上述三个文件的路径。在gydF4y2Ba默认的gydF4y2Ba数据库(如gydF4y2Baprofiles.ymlgydF4y2Ba文件),DBT创建一个名为gydF4y2Badiamonds_four_csgydF4y2Ba还有两个视图gydF4y2Badiamonds_list_colorsgydF4y2Ba而且gydF4y2Badiamonds_pricesgydF4y2Ba.DBT从相关的视图和表名中获取这些视图和表名gydF4y2Ba. sqlgydF4y2Ba文件的名字。gydF4y2Ba

    DBT运行——model models/diamonds_four_cs。sql / diamonds_list_colors模型。sql模型/ diamonds_prices.sqlgydF4y2Ba
    ...gydF4y2Ba...1 | 3 default.diamonds_four_cs开始表模型 ....................(运行)gydF4y2Ba...| 1 of 3 OK创建表模型default.diamonds_four_cs...............(好吧…)gydF4y2Ba...| 2 of 3开始视图模型default.diamonds_list_colors.................(运行)gydF4y2Ba...| 2 of 3 OK创建视图模型default.diamonds_list_colors............(好吧…)gydF4y2Ba...| 3的3开始default.diamonds_prices视图模型 ......................(运行)gydF4y2Ba...| 3 of 3 OK创建视图模型default.diamonds_prices.................(好吧…)gydF4y2Ba...|gydF4y2Ba...完成运行1个表模型,2个视图模型…gydF4y2Ba成功完成gydF4y2Ba完成了。Pass =3 warn =0 error =0 skip =0 total =3gydF4y2Ba
  5. 运行下面的SQL代码列出关于新视图的信息,并从表和视图中选择所有行。gydF4y2Ba

    如果连接到集群,则可以从数据库运行此SQL代码gydF4y2Ba笔记本gydF4y2Ba连接到集群,并指定SQL作为笔记本的默认语言。如果连接到SQL仓库,则可以从数据库中运行此SQL代码gydF4y2Ba查询gydF4y2Ba.gydF4y2Ba

    显示gydF4y2Ba的观点gydF4y2Ba在gydF4y2Ba默认的gydF4y2Ba;gydF4y2Ba
    +-----------+----------------------+-------------+gydF4y2Ba|命名空间| viewName | istem临时| . view视图gydF4y2Ba+===========+======================+=============+gydF4y2Ba| default | diamonds_list_colors | false |gydF4y2Ba+-----------+----------------------+-------------+gydF4y2Ba| default | diamonds_prices | false |gydF4y2Ba+-----------+----------------------+-------------+gydF4y2Ba
    选择gydF4y2Ba*gydF4y2Ba从gydF4y2Badiamonds_four_csgydF4y2Ba;gydF4y2Ba
    +-------+---------+-------+---------+gydF4y2Ba|克拉|切|颜色|清晰度|gydF4y2Ba+=======+=========+=======+=========+gydF4y2Ba| 0.23 |理想| E | SI2 |gydF4y2Ba+-------+---------+-------+---------+gydF4y2Ba| 0.21 | Premium | E | SI1 |gydF4y2Ba+-------+---------+-------+---------+gydF4y2Ba...gydF4y2Ba
    选择gydF4y2Ba*gydF4y2Ba从gydF4y2Badiamonds_list_colorsgydF4y2Ba;gydF4y2Ba
    +-------+gydF4y2Ba|颜色|gydF4y2Ba+ = = = = = = = +gydF4y2Ba| d |gydF4y2Ba+-------+gydF4y2Ba| e |gydF4y2Ba+-------+gydF4y2Ba...gydF4y2Ba
    选择gydF4y2Ba*gydF4y2Ba从gydF4y2Badiamonds_pricesgydF4y2Ba;gydF4y2Ba
    +-------+---------+gydF4y2Ba|颜色|价格|gydF4y2Ba+=======+=========+gydF4y2Ba| j | 5323.82 |gydF4y2Ba+-------+---------+gydF4y2Ba|我| 5091.87 |gydF4y2Ba+-------+---------+gydF4y2Ba...gydF4y2Ba

步骤4:创建并运行更复杂的模型gydF4y2Ba

在此步骤中,您将为一组相关数据表创建更复杂的模型。这些数据表包含关于一个虚构的体育联赛的信息,该联赛由三支球队组成,每个赛季打六场比赛。这个过程创建数据表,创建模型,并运行模型。gydF4y2Ba

  1. 运行以下SQL代码创建必要的数据表。gydF4y2Ba

    如果连接到集群,则可以从数据库运行此SQL代码gydF4y2Ba笔记本gydF4y2Ba连接到集群,并指定SQL作为笔记本的默认语言。如果连接到SQL仓库,则可以从数据库中运行此SQL代码gydF4y2Ba查询gydF4y2Ba.gydF4y2Ba

    此步骤中的表和视图从gydF4y2Bazzz_gydF4y2Ba在这个例子中帮助识别它们。对于您自己的表和视图,不需要遵循此模式。gydF4y2Ba

    下降gydF4y2Ba表格gydF4y2Ba如果gydF4y2Ba存在gydF4y2Bazzz_game_opponentsgydF4y2Ba;gydF4y2Ba下降gydF4y2Ba表格gydF4y2Ba如果gydF4y2Ba存在gydF4y2Bazzz_game_scoresgydF4y2Ba;gydF4y2Ba下降gydF4y2Ba表格gydF4y2Ba如果gydF4y2Ba存在gydF4y2Bazzz_gamesgydF4y2Ba;gydF4y2Ba下降gydF4y2Ba表格gydF4y2Ba如果gydF4y2Ba存在gydF4y2Bazzz_teamsgydF4y2Ba;gydF4y2Ba创建gydF4y2Ba表格gydF4y2Bazzz_game_opponentsgydF4y2Ba(gydF4y2Bagame_idgydF4y2BaINTgydF4y2Ba,gydF4y2Bahome_team_idgydF4y2BaINTgydF4y2Ba,gydF4y2Bavisitor_team_idgydF4y2BaINTgydF4y2Ba)gydF4y2Ba使用gydF4y2BaδgydF4y2Ba;gydF4y2Ba插入gydF4y2Ba成gydF4y2Bazzz_game_opponentsgydF4y2Ba值gydF4y2Ba(gydF4y2Ba1gydF4y2Ba,gydF4y2Ba1gydF4y2Ba,gydF4y2Ba2gydF4y2Ba);gydF4y2Ba插入gydF4y2Ba成gydF4y2Bazzz_game_opponentsgydF4y2Ba值gydF4y2Ba(gydF4y2Ba2gydF4y2Ba,gydF4y2Ba1gydF4y2Ba,gydF4y2Ba3.gydF4y2Ba);gydF4y2Ba插入gydF4y2Ba成gydF4y2Bazzz_game_opponentsgydF4y2Ba值gydF4y2Ba(gydF4y2Ba3.gydF4y2Ba,gydF4y2Ba2gydF4y2Ba,gydF4y2Ba1gydF4y2Ba);gydF4y2Ba插入gydF4y2Ba成gydF4y2Bazzz_game_opponentsgydF4y2Ba值gydF4y2Ba(gydF4y2Ba4gydF4y2Ba,gydF4y2Ba2gydF4y2Ba,gydF4y2Ba3.gydF4y2Ba);gydF4y2Ba插入gydF4y2Ba成gydF4y2Bazzz_game_opponentsgydF4y2Ba值gydF4y2Ba(gydF4y2Ba5gydF4y2Ba,gydF4y2Ba3.gydF4y2Ba,gydF4y2Ba1gydF4y2Ba);gydF4y2Ba插入gydF4y2Ba成gydF4y2Bazzz_game_opponentsgydF4y2Ba值gydF4y2Ba(gydF4y2Ba6gydF4y2Ba,gydF4y2Ba3.gydF4y2Ba,gydF4y2Ba2gydF4y2Ba);gydF4y2Ba——结果:gydF4y2Ba-- +---------+--------------+-----------------+gydF4y2Ba——| game_id | home_team_id | visitor_team_id |gydF4y2Ba-- +=========+==============+=================+gydF4y2Ba——| 1 | 1 | 2 |gydF4y2Ba-- +---------+--------------+-----------------+gydF4y2Ba——| 2 | 1 | 3 |gydF4y2Ba-- +---------+--------------+-----------------+gydF4y2Ba——| 3 | 2 | 1 |gydF4y2Ba-- +---------+--------------+-----------------+gydF4y2Ba——| 4 | 2 | 3 |gydF4y2Ba-- +---------+--------------+-----------------+gydF4y2Ba——| 5 | 3 | 1 |gydF4y2Ba-- +---------+--------------+-----------------+gydF4y2Ba——| 6 | 3 | 2 |gydF4y2Ba-- +---------+--------------+-----------------+gydF4y2Ba创建gydF4y2Ba表格gydF4y2Bazzz_game_scoresgydF4y2Ba(gydF4y2Bagame_idgydF4y2BaINTgydF4y2Ba,gydF4y2Bahome_team_scoregydF4y2BaINTgydF4y2Ba,gydF4y2Bavisitor_team_scoregydF4y2BaINTgydF4y2Ba)gydF4y2Ba使用gydF4y2BaδgydF4y2Ba;gydF4y2Ba插入gydF4y2Ba成gydF4y2Bazzz_game_scoresgydF4y2Ba值gydF4y2Ba(gydF4y2Ba1gydF4y2Ba,gydF4y2Ba4gydF4y2Ba,gydF4y2Ba2gydF4y2Ba);gydF4y2Ba插入gydF4y2Ba成gydF4y2Bazzz_game_scoresgydF4y2Ba值gydF4y2Ba(gydF4y2Ba2gydF4y2Ba,gydF4y2Ba0gydF4y2Ba,gydF4y2Ba1gydF4y2Ba);gydF4y2Ba插入gydF4y2Ba成gydF4y2Bazzz_game_scoresgydF4y2Ba值gydF4y2Ba(gydF4y2Ba3.gydF4y2Ba,gydF4y2Ba1gydF4y2Ba,gydF4y2Ba2gydF4y2Ba);gydF4y2Ba插入gydF4y2Ba成gydF4y2Bazzz_game_scoresgydF4y2Ba值gydF4y2Ba(gydF4y2Ba4gydF4y2Ba,gydF4y2Ba3.gydF4y2Ba,gydF4y2Ba2gydF4y2Ba);gydF4y2Ba插入gydF4y2Ba成gydF4y2Bazzz_game_scoresgydF4y2Ba值gydF4y2Ba(gydF4y2Ba5gydF4y2Ba,gydF4y2Ba3.gydF4y2Ba,gydF4y2Ba0gydF4y2Ba);gydF4y2Ba插入gydF4y2Ba成gydF4y2Bazzz_game_scoresgydF4y2Ba值gydF4y2Ba(gydF4y2Ba6gydF4y2Ba,gydF4y2Ba3.gydF4y2Ba,gydF4y2Ba1gydF4y2Ba);gydF4y2Ba——结果:gydF4y2Ba-- +---------+-----------------+--------------------+gydF4y2Ba——| game_id | home_team_score | visitor_team_score |gydF4y2Ba-- +=========+=================+====================+gydF4y2Ba——| 1 | 4 | 2 |gydF4y2Ba-- +---------+-----------------+--------------------+gydF4y2Ba——| 2 | 0 | 1 |gydF4y2Ba-- +---------+-----------------+--------------------+gydF4y2Ba——| 3 | 1 | 2 |gydF4y2Ba-- +---------+-----------------+--------------------+gydF4y2Ba——| 4 | 3 | 2 |gydF4y2Ba-- +---------+-----------------+--------------------+gydF4y2Ba——| 5 | 3 | 0 |gydF4y2Ba-- +---------+-----------------+--------------------+gydF4y2Ba——| 6 | 3 | 1 |gydF4y2Ba-- +---------+-----------------+--------------------+gydF4y2Ba创建gydF4y2Ba表格gydF4y2Bazzz_gamesgydF4y2Ba(gydF4y2Bagame_idgydF4y2BaINTgydF4y2Ba,gydF4y2Bagame_dategydF4y2Ba日期gydF4y2Ba)gydF4y2Ba使用gydF4y2BaδgydF4y2Ba;gydF4y2Ba插入gydF4y2Ba成gydF4y2Bazzz_gamesgydF4y2Ba值gydF4y2Ba(gydF4y2Ba1gydF4y2Ba,gydF4y2Ba“2020-12-12”gydF4y2Ba);gydF4y2Ba插入gydF4y2Ba成gydF4y2Bazzz_gamesgydF4y2Ba值gydF4y2Ba(gydF4y2Ba2gydF4y2Ba,gydF4y2Ba“2021-01-09”gydF4y2Ba);gydF4y2Ba插入gydF4y2Ba成gydF4y2Bazzz_gamesgydF4y2Ba值gydF4y2Ba(gydF4y2Ba3.gydF4y2Ba,gydF4y2Ba“2020-12-19”gydF4y2Ba);gydF4y2Ba插入gydF4y2Ba成gydF4y2Bazzz_gamesgydF4y2Ba值gydF4y2Ba(gydF4y2Ba4gydF4y2Ba,gydF4y2Ba“2021-01-16”gydF4y2Ba);gydF4y2Ba插入gydF4y2Ba成gydF4y2Bazzz_gamesgydF4y2Ba值gydF4y2Ba(gydF4y2Ba5gydF4y2Ba,gydF4y2Ba“2021-01-23”gydF4y2Ba);gydF4y2Ba插入gydF4y2Ba成gydF4y2Bazzz_gamesgydF4y2Ba值gydF4y2Ba(gydF4y2Ba6gydF4y2Ba,gydF4y2Ba“2021-02-06”gydF4y2Ba);gydF4y2Ba——结果:gydF4y2Ba-- +---------+------------+gydF4y2Ba——| game_id | game_date |gydF4y2Ba-- +=========+============+gydF4y2Ba——| 1 | 2020-12-12 |gydF4y2Ba-- +---------+------------+gydF4y2Ba——| 2 | 2021-01-09 |gydF4y2Ba-- +---------+------------+gydF4y2Ba——| 3 | 2020-12-19 |gydF4y2Ba-- +---------+------------+gydF4y2Ba——| 4 | 2021-01-16 |gydF4y2Ba-- +---------+------------+gydF4y2Ba——| 5 | 2021-01-23 |gydF4y2Ba-- +---------+------------+gydF4y2Ba——| 6 | 2021-02-06 |gydF4y2Ba-- +---------+------------+gydF4y2Ba创建gydF4y2Ba表格gydF4y2Bazzz_teamsgydF4y2Ba(gydF4y2Bateam_idgydF4y2BaINTgydF4y2Ba,gydF4y2Bateam_citygydF4y2BaVARCHARgydF4y2Ba(gydF4y2Ba15gydF4y2Ba)gydF4y2Ba)gydF4y2Ba使用gydF4y2BaδgydF4y2Ba;gydF4y2Ba插入gydF4y2Ba成gydF4y2Bazzz_teamsgydF4y2Ba值gydF4y2Ba(gydF4y2Ba1gydF4y2Ba,gydF4y2Ba“旧金山”gydF4y2Ba);gydF4y2Ba插入gydF4y2Ba成gydF4y2Bazzz_teamsgydF4y2Ba值gydF4y2Ba(gydF4y2Ba2gydF4y2Ba,gydF4y2Ba“西雅图”gydF4y2Ba);gydF4y2Ba插入gydF4y2Ba成gydF4y2Bazzz_teamsgydF4y2Ba值gydF4y2Ba(gydF4y2Ba3.gydF4y2Ba,gydF4y2Ba“阿姆斯特丹”gydF4y2Ba);gydF4y2Ba——结果:gydF4y2Ba-- +---------+---------------+gydF4y2Ba——| team_id | team_city |gydF4y2Ba-- +=========+===============+gydF4y2Ba——| 1 |旧金山|gydF4y2Ba-- +---------+---------------+gydF4y2Ba——西雅图| 2 |gydF4y2Ba-- +---------+---------------+gydF4y2Ba——阿姆斯特丹| 3 |gydF4y2Ba-- +---------+---------------+gydF4y2Ba
  2. 在项目的gydF4y2Ba模型gydF4y2Ba目录,创建一个名为gydF4y2Bazzz_game_details.sqlgydF4y2Ba使用下面的SQL语句。这条语句创建了一个表,其中提供了每场比赛的详细信息,比如球队名称和分数。的gydF4y2Ba配置gydF4y2BaBlock指示DBT根据这条语句在数据库中创建一个表。gydF4y2Ba

    —创建一个表格,提供每款游戏的全部细节,包括gydF4y2Ba-比赛ID,主队和客队的城市名称和比分,gydF4y2Ba——比赛获胜者的城市名称和比赛日期。gydF4y2Ba
    {{gydF4y2Ba配置gydF4y2Ba(gydF4y2Ba物化gydF4y2Ba=gydF4y2Ba“表”gydF4y2Ba,gydF4y2Bafile_formatgydF4y2Ba=gydF4y2Ba“δ”gydF4y2Ba)gydF4y2Ba}}gydF4y2Ba
    第四步:将访客团队id替换为他们所在城市的名称。gydF4y2Ba选择gydF4y2Bagame_idgydF4y2Ba,gydF4y2Ba首页gydF4y2Ba,gydF4y2BatgydF4y2Ba.gydF4y2Bateam_citygydF4y2Ba作为gydF4y2Ba游客gydF4y2Ba,gydF4y2Bahome_scoregydF4y2Ba,gydF4y2Bavisitor_scoregydF4y2Ba,gydF4y2Ba第四步中的第三步:显示每场比赛获胜者的城市名称。gydF4y2Ba情况下gydF4y2Ba当gydF4y2Bahome_scoregydF4y2Ba>gydF4y2Bavisitor_scoregydF4y2Ba然后gydF4y2Ba首页gydF4y2Ba当gydF4y2Bavisitor_scoregydF4y2Ba>gydF4y2Bahome_scoregydF4y2Ba然后gydF4y2BatgydF4y2Ba.gydF4y2Bateam_citygydF4y2Ba结束gydF4y2Ba作为gydF4y2Ba赢家gydF4y2Ba,gydF4y2Bagame_dategydF4y2Ba作为gydF4y2Ba日期gydF4y2Ba从gydF4y2Ba(gydF4y2Ba第四步中的第二步:将主队id替换为他们实际的城市名称。gydF4y2Ba选择gydF4y2Bagame_idgydF4y2Ba,gydF4y2BatgydF4y2Ba.gydF4y2Bateam_citygydF4y2Ba作为gydF4y2Ba首页gydF4y2Ba,gydF4y2Bahome_scoregydF4y2Ba,gydF4y2Bavisitor_team_idgydF4y2Ba,gydF4y2Bavisitor_scoregydF4y2Ba,gydF4y2Bagame_dategydF4y2Ba从gydF4y2Ba(gydF4y2Ba第四步中的第一步:结合来自不同表格的数据(例如,游戏和球队id,分数,日期)。gydF4y2Ba选择gydF4y2BaggydF4y2Ba.gydF4y2Bagame_idgydF4y2Ba,gydF4y2Ba去gydF4y2Ba.gydF4y2Bahome_team_idgydF4y2Ba,gydF4y2BagsgydF4y2Ba.gydF4y2Bahome_team_scoregydF4y2Ba作为gydF4y2Bahome_scoregydF4y2Ba,gydF4y2Ba去gydF4y2Ba.gydF4y2Bavisitor_team_idgydF4y2Ba,gydF4y2BagsgydF4y2Ba.gydF4y2Bavisitor_team_scoregydF4y2Ba作为gydF4y2Bavisitor_scoregydF4y2Ba,gydF4y2BaggydF4y2Ba.gydF4y2Bagame_dategydF4y2Ba从gydF4y2Bazzz_gamesgydF4y2Ba作为gydF4y2BaggydF4y2Ba,gydF4y2Bazzz_game_opponentsgydF4y2Ba作为gydF4y2Ba去gydF4y2Ba,gydF4y2Bazzz_game_scoresgydF4y2Ba作为gydF4y2BagsgydF4y2Ba在哪里gydF4y2BaggydF4y2Ba.gydF4y2Bagame_idgydF4y2Ba=gydF4y2Ba去gydF4y2Ba.gydF4y2Bagame_idgydF4y2Ba而且gydF4y2BaggydF4y2Ba.gydF4y2Bagame_idgydF4y2Ba=gydF4y2BagsgydF4y2Ba.gydF4y2Bagame_idgydF4y2Ba)gydF4y2Ba作为gydF4y2Baall_idsgydF4y2Ba,gydF4y2Bazzz_teamsgydF4y2Ba作为gydF4y2BatgydF4y2Ba在哪里gydF4y2Baall_idsgydF4y2Ba.gydF4y2Bahome_team_idgydF4y2Ba=gydF4y2BatgydF4y2Ba.gydF4y2Bateam_idgydF4y2Ba)gydF4y2Ba作为gydF4y2Bavisitor_idsgydF4y2Ba,gydF4y2Bazzz_teamsgydF4y2Ba作为gydF4y2BatgydF4y2Ba在哪里gydF4y2Bavisitor_idsgydF4y2Ba.gydF4y2Bavisitor_team_idgydF4y2Ba=gydF4y2BatgydF4y2Ba.gydF4y2Bateam_idgydF4y2Ba订单gydF4y2Ba通过gydF4y2Bagame_dategydF4y2BadescgydF4y2Ba
  3. 在项目的gydF4y2Ba模型gydF4y2Ba目录,创建一个名为gydF4y2Bazzz_win_loss_records.sqlgydF4y2Ba使用下面的SQL语句。该语句创建了一个视图,其中列出了本赛季球队的输赢记录。gydF4y2Ba

    —创建一个视图,根据球队总结本赛季的胜利和失败记录。第二步:计算每支队伍的胜利和失败的次数。选胜者为队,算(胜者)为胜,——每队打4场比赛。(4 -计算(赢家))从(- 2中的第一步:确定每场比赛的赢家和输家。从{{ref('zzz_game_details')}})组中选择game_id,获胜者,当home =获胜者时的情况,然后访问者其他home end作为失败者gydF4y2Ba
  4. 激活虚拟环境后,运行gydF4y2Ba印度生物技术部gydF4y2Ba运行gydF4y2Ba命令,使用前面两个文件的路径。在gydF4y2Ba默认的gydF4y2Ba数据库(如gydF4y2Baprofiles.ymlgydF4y2Ba文件),DBT创建一个名为gydF4y2Bazzz_game_detailsgydF4y2Ba一个视图名为gydF4y2Bazzz_win_loss_recordsgydF4y2Ba.DBT从相关的视图和表名中获取这些视图和表名gydF4y2Ba. sqlgydF4y2Ba文件的名字。gydF4y2Ba

    DBT运行——model models/zzz_game_details。sql模型/ zzz_win_loss_records.sqlgydF4y2Ba
    ...gydF4y2Ba...| 1 2 default.zzz_game_details开始表模型 ....................(运行)gydF4y2Ba...| 1 of 2 OK创建表模型default.zzz_game_details...............(好吧…)gydF4y2Ba...| 2 2开始default.zzz_win_loss_records视图模型 .................(运行)gydF4y2Ba...| 2 of 2 OK创建视图模型default.zzz_win_loss_records............(好吧…)gydF4y2Ba...|gydF4y2Ba...完成运行1个表模型,1个视图模型…gydF4y2Ba成功完成gydF4y2Ba完成了。Pass =2 warn =0 error =0 skip =0 total =2gydF4y2Ba
  5. 运行以下SQL代码列出关于新视图的信息,并从表和视图中选择所有行。gydF4y2Ba

    如果连接到集群,则可以从数据库运行此SQL代码gydF4y2Ba笔记本gydF4y2Ba连接到集群,并指定SQL作为笔记本的默认语言。如果连接到SQL仓库,则可以从数据库中运行此SQL代码gydF4y2Ba查询gydF4y2Ba.gydF4y2Ba

    显示gydF4y2Ba的观点gydF4y2Ba从gydF4y2Ba默认的gydF4y2Ba就像gydF4y2Ba“zzz_win_loss_records”gydF4y2Ba;gydF4y2Ba
    +-----------+----------------------+-------------+gydF4y2Ba|命名空间| viewName | istem临时| . view视图gydF4y2Ba+===========+======================+=============+gydF4y2Ba| default | zzz_win_loss_records | false |gydF4y2Ba+-----------+----------------------+-------------+gydF4y2Ba
    选择gydF4y2Ba*gydF4y2Ba从gydF4y2Bazzz_game_detailsgydF4y2Ba;gydF4y2Ba
    +---------+---------------+---------------+------------+---------------+---------------+------------+gydF4y2Ba| game_id | home | visitor | home_score | visitor_score | winner | date |gydF4y2Ba+=========+===============+===============+============+===============+===============+============+gydF4y2Ba| 1 |旧金山|西雅图| 4 | 2 |旧金山| 2020-12-12 |gydF4y2Ba+---------+---------------+---------------+------------+---------------+---------------+------------+gydF4y2Ba| 2 |旧金山|阿姆斯特丹| 0 | 1 |阿姆斯特丹| 2021-01-09 |gydF4y2Ba+---------+---------------+---------------+------------+---------------+---------------+------------+gydF4y2Ba| 3 |西雅图|旧金山| 1 | 2 |旧金山| 2020-12-19 |gydF4y2Ba+---------+---------------+---------------+------------+---------------+---------------+------------+gydF4y2Ba| 4 |西雅图|阿姆斯特丹| 3 | 2 |西雅图| 2021-01-16 |gydF4y2Ba+---------+---------------+---------------+------------+---------------+---------------+------------+gydF4y2Ba| 5 |阿姆斯特丹|旧金山| 3 | 0 |阿姆斯特丹| 2021-01-23 |gydF4y2Ba+---------+---------------+---------------+------------+---------------+---------------+------------+gydF4y2Ba| 6 |阿姆斯特丹|西雅图| 3 | 1 |阿姆斯特丹| 2021-02-06 |gydF4y2Ba+---------+---------------+---------------+------------+---------------+---------------+------------+gydF4y2Ba
    选择gydF4y2Ba*gydF4y2Ba从gydF4y2Bazzz_win_loss_recordsgydF4y2Ba;gydF4y2Ba
    +---------------+------+--------+gydF4y2Ba|队|赢|输|gydF4y2Ba+===============+======+========+gydF4y2Ba|阿姆斯特丹| 3 | 1 |gydF4y2Ba+---------------+------+--------+gydF4y2Ba|旧金山| 2 | 2 |gydF4y2Ba+---------------+------+--------+gydF4y2Ba|西雅图| 1 | 3 |gydF4y2Ba+---------------+------+--------+gydF4y2Ba

步骤5:创建并运行测试gydF4y2Ba

在此步骤中,您将创建gydF4y2Ba测试gydF4y2Ba,这是你对你的模型做出的断言。运行这些测试时,dbt会告诉您项目中的每个测试是通过还是失败。gydF4y2Ba

有两种类型的测试。gydF4y2Ba模式测试gydF4y2Ba,在YAML中应用,返回没有通过断言的记录数。当这个数字为零时,所有记录通过,因此测试通过。gydF4y2Ba数据测试gydF4y2Ba是必须返回零记录才能通过的特定查询。gydF4y2Ba

  1. 在项目的gydF4y2Ba模型gydF4y2Ba目录,创建一个名为gydF4y2Baschema.ymlgydF4y2Ba附有以下内容。此文件包括模式测试,用于确定指定列是否具有惟一值、是否为空、是否仅具有指定值或组合。gydF4y2Ba

    版本gydF4y2Ba:gydF4y2Ba2gydF4y2Ba模型gydF4y2Ba:gydF4y2Ba-gydF4y2Ba的名字gydF4y2Ba:gydF4y2Bazzz_game_detailsgydF4y2Ba列gydF4y2Ba:gydF4y2Ba-gydF4y2Ba的名字gydF4y2Ba:gydF4y2Bagame_idgydF4y2Ba测试gydF4y2Ba:gydF4y2Ba-gydF4y2Ba独特的gydF4y2Ba-gydF4y2Banot_nullgydF4y2Ba-gydF4y2Ba的名字gydF4y2Ba:gydF4y2Ba首页gydF4y2Ba测试gydF4y2Ba:gydF4y2Ba-gydF4y2Banot_nullgydF4y2Ba-gydF4y2Baaccepted_valuesgydF4y2Ba:gydF4y2Ba值gydF4y2Ba:gydF4y2Ba[gydF4y2Ba“阿姆斯特丹”gydF4y2Ba,gydF4y2Ba“圣gydF4y2Ba旧金山的gydF4y2Ba,gydF4y2Ba“西雅图”gydF4y2Ba]gydF4y2Ba-gydF4y2Ba的名字gydF4y2Ba:gydF4y2Ba游客gydF4y2Ba测试gydF4y2Ba:gydF4y2Ba-gydF4y2Banot_nullgydF4y2Ba-gydF4y2Baaccepted_valuesgydF4y2Ba:gydF4y2Ba值gydF4y2Ba:gydF4y2Ba[gydF4y2Ba“阿姆斯特丹”gydF4y2Ba,gydF4y2Ba“圣gydF4y2Ba旧金山的gydF4y2Ba,gydF4y2Ba“西雅图”gydF4y2Ba]gydF4y2Ba-gydF4y2Ba的名字gydF4y2Ba:gydF4y2Bahome_scoregydF4y2Ba测试gydF4y2Ba:gydF4y2Ba-gydF4y2Banot_nullgydF4y2Ba-gydF4y2Ba的名字gydF4y2Ba:gydF4y2Bavisitor_scoregydF4y2Ba测试gydF4y2Ba:gydF4y2Ba-gydF4y2Banot_nullgydF4y2Ba-gydF4y2Ba的名字gydF4y2Ba:gydF4y2Ba赢家gydF4y2Ba测试gydF4y2Ba:gydF4y2Ba-gydF4y2Banot_nullgydF4y2Ba-gydF4y2Baaccepted_valuesgydF4y2Ba:gydF4y2Ba值gydF4y2Ba:gydF4y2Ba[gydF4y2Ba“阿姆斯特丹”gydF4y2Ba,gydF4y2Ba“圣gydF4y2Ba旧金山的gydF4y2Ba,gydF4y2Ba“西雅图”gydF4y2Ba]gydF4y2Ba-gydF4y2Ba的名字gydF4y2Ba:gydF4y2Ba日期gydF4y2Ba测试gydF4y2Ba:gydF4y2Ba-gydF4y2Banot_nullgydF4y2Ba-gydF4y2Ba的名字gydF4y2Ba:gydF4y2Bazzz_win_loss_recordsgydF4y2Ba列gydF4y2Ba:gydF4y2Ba-gydF4y2Ba的名字gydF4y2Ba:gydF4y2Ba团队gydF4y2Ba测试gydF4y2Ba:gydF4y2Ba-gydF4y2Ba独特的gydF4y2Ba-gydF4y2Banot_nullgydF4y2Ba-gydF4y2Ba的关系gydF4y2Ba:gydF4y2Ba来gydF4y2Ba:gydF4y2Ba裁判(“zzz_game_details”)gydF4y2Ba场gydF4y2Ba:gydF4y2Ba首页gydF4y2Ba-gydF4y2Ba的名字gydF4y2Ba:gydF4y2Ba赢了gydF4y2Ba测试gydF4y2Ba:gydF4y2Ba-gydF4y2Banot_nullgydF4y2Ba-gydF4y2Ba的名字gydF4y2Ba:gydF4y2Ba损失gydF4y2Ba测试gydF4y2Ba:gydF4y2Ba-gydF4y2Banot_nullgydF4y2Ba
  2. 在项目的gydF4y2Ba测试gydF4y2Ba目录,创建一个名为gydF4y2Bazzz_game_details_check_dates.sqlgydF4y2Ba使用下面的SQL语句。该文件包括一个数据测试,以确定是否有任何比赛发生在常规赛之外。gydF4y2Ba

    ——本赛季的比赛发生在2020-12-12和2021-02-06之间。—要通过此测试,此查询必须不返回任何结果。Select date from {{ref('zzz_game_details')}} where date < '2020-12-12' or date > '2021-02-06'gydF4y2Ba
  3. 在项目的gydF4y2Ba测试gydF4y2Ba目录,创建一个名为gydF4y2Bazzz_game_details_check_scores.sqlgydF4y2Ba使用下面的SQL语句。该文件包括一个数据测试,以确定是否有任何比分为负或任何比赛平局。gydF4y2Ba

    这项运动不允许负分或平局。—要通过此测试,此查询必须不返回任何结果。从{{ref('zzz_game_details')}}中选择home_score, visitor_score,其中home_score < 0或visitor_score < 0或home_score = visitor_scoregydF4y2Ba
  4. 在项目的gydF4y2Ba测试gydF4y2Ba目录,创建一个名为gydF4y2Bazzz_win_loss_records_check_records.sqlgydF4y2Ba使用下面的SQL语句。该文件包括一个数据测试,以确定是否有任何球队的输赢记录为负,输赢记录超过了比赛次数,或者比赛次数超过了允许的次数。gydF4y2Ba

    ——本赛季每队各参加4场比赛。—要通过此测试,此查询必须不返回任何结果。从{{ref('zzz_win_loss_records')}}中选择胜负,其中赢< 0或赢> 4或输< 0或输> 4或(赢+输)> 4gydF4y2Ba
  5. 激活虚拟环境后,运行gydF4y2Ba印度生物技术部gydF4y2Ba测验gydF4y2Ba命令使用gydF4y2Ba——模式gydF4y2Ba属性中的两个模型的名称gydF4y2Ba模型/ schema.ymlgydF4y2Ba文件运行为这些模型指定的测试。gydF4y2Ba

    印度生物技术部gydF4y2Ba测验gydF4y2Ba——schema——models zzz_game_details zzz_win_loss_recordsgydF4y2Ba
    ...gydF4y2Ba...| 1 of 15 START测试accepted_values_zzz_game_details_home__阿姆斯特丹__san_francisco__seattle [RUN]gydF4y2Ba...| 1 of 15 PASS accepted_values_zzz_game_details_home__Amsterdam__San_Francisco__Seattle [PASS…]gydF4y2Ba...gydF4y2Ba...|gydF4y2Ba...|完成15个测试…gydF4y2Ba成功完成gydF4y2Ba完成了。Pass =15 warn =0 error =0 skip =0 total =15gydF4y2Ba
  6. 运行gydF4y2Ba印度生物技术部gydF4y2Ba测验gydF4y2Ba命令使用gydF4y2Ba——数据gydF4y2Ba选项在项目中运行测试gydF4y2Ba测试gydF4y2Ba目录中。gydF4y2Ba

    印度生物技术部gydF4y2Ba测验gydF4y2Ba——数据gydF4y2Ba
    ...gydF4y2Ba...1 | 3 zzz_game_details_check_dates开始测试 .......................(运行)gydF4y2Ba...1 | 3通过zzz_game_details_check_dates .............................(通过…)gydF4y2Ba...gydF4y2Ba...|gydF4y2Ba...|完成3个测试…gydF4y2Ba成功完成gydF4y2Ba完成了。Pass =3 warn =0 error =0 skip =0 total =3gydF4y2Ba

第六步:清理gydF4y2Ba

可以通过运行以下SQL代码删除为本例创建的表和视图。gydF4y2Ba

如果连接到集群,则可以从数据库运行此SQL代码gydF4y2Ba笔记本gydF4y2Ba连接到集群,并指定SQL作为笔记本的默认语言。如果连接到SQL仓库,则可以从数据库中运行此SQL代码gydF4y2Ba查询gydF4y2Ba.gydF4y2Ba

下降gydF4y2Ba表格gydF4y2Bazzz_game_opponentsgydF4y2Ba;gydF4y2Ba下降gydF4y2Ba表格gydF4y2Bazzz_game_scoresgydF4y2Ba;gydF4y2Ba下降gydF4y2Ba表格gydF4y2Bazzz_gamesgydF4y2Ba;gydF4y2Ba下降gydF4y2Ba表格gydF4y2Bazzz_teamsgydF4y2Ba;gydF4y2Ba下降gydF4y2Ba表格gydF4y2Bazzz_game_detailsgydF4y2Ba;gydF4y2Ba下降gydF4y2Ba视图gydF4y2Bazzz_win_loss_recordsgydF4y2Ba;gydF4y2Ba下降gydF4y2Ba表格gydF4y2Ba钻石gydF4y2Ba;gydF4y2Ba下降gydF4y2Ba表格gydF4y2Badiamonds_four_csgydF4y2Ba;gydF4y2Ba下降gydF4y2Ba视图gydF4y2Badiamonds_list_colorsgydF4y2Ba;gydF4y2Ba下降gydF4y2Ba视图gydF4y2Badiamonds_pricesgydF4y2Ba;gydF4y2Ba

下一个步骤gydF4y2Ba

故障排除gydF4y2Ba

本节将解决dbt Core与Databricks一起使用时的常见问题。gydF4y2Ba

一般故障排除gydF4y2Ba

看到gydF4y2Ba得到帮助gydF4y2Ba在dbt实验室网站上。gydF4y2Ba