使用SQL在砖砖的工作

您可以使用SQL任务类型的砖的工作,允许您创建、时间表,操作,和监控工作流,包括砖等SQL对象的查询,指示板和警报。例如,您的工作流可以摄取数据,准备数据,使用砖SQL查询的执行分析,然后在砖SQL仪表盘的显示结果。

本文提供了一个示例流程,创建一个砖SQL仪表板显示指标GitHub的贡献。在本例中,您将:

  • 使用Python脚本和摄取GitHub数据GitHub REST API

  • 将管道使用三角洲住GitHub数据表。

  • 触发砖SQL查询的执行分析准备数据。

  • 在砖SQL的仪表板显示分析。

GitHub分析仪表盘”src=

在你开始之前

你需要完成这个介绍如下:

步骤1:将GitHub令牌存储在一个秘密

而不是硬编码等凭证GitHub个人访问令牌工作,砖推荐使用范围安全地存储和管理的秘密的秘密。下面的砖CLI命令的一个示例创建一个秘密范围和GitHub令牌存储在一个秘密的范围:

砖秘密创建范围——范围< scope-name >砖秘密把范围< scope-name >——< token-key >键字符串值<标记>
  • 取代< scope-name砖秘密范围的名称存储令牌。

  • 取代< token-key >的名称分配给令牌的关键。

  • 取代<标记>GitHub个人访问令牌的值。

步骤2:创建一个脚本获取GitHub数据

下面的Python脚本使用GitHub REST API来获取数据从GitHub回购承诺和贡献。输入参数指定GitHub回购。记录保存到一个位置在DBFS指定的另一个输入参数。

这个示例使用DBFS存储Python脚本,但是您还可以使用砖回购存储和管理脚本。

  1. 这个脚本保存到您的本地磁盘上定位:

进口json进口请求进口sysapi_url=“https://api.github.com”defget_commits(老板,回购,令牌,路径):页面=1request_url=f{api_url}/回购/{老板}/{回购}/提交”更多的=真正的get_response(request_url,f{路径}/提交”,令牌)defget_contributors(老板,回购,令牌,路径):页面=1request_url=f{api_url}/回购/{老板}/{回购}/贡献者”更多的=真正的get_response(request_url,f{路径}/贡献者”,令牌)defget_response(request_url,路径,令牌):页面=1更多的=真正的更多的:响应=请求得到(request_url,参数个数={“页面”:页面},={“授权”:“令牌”+令牌})如果响应文本! =“[]”:(路径+“/记录- - - - - -”+str(页面)+. json”,响应文本)页面+ =1其他的:更多的=def(文件名,内容):dbutilsfs(文件名,内容)def主要():arg游戏=sysargv(1:]如果len(arg游戏)<6:打印(”用法:github-api。py业主回购请求output-dir secret-scope秘钥”)sys退出(1)老板=sysargv(1]回购=sysargv(2]请求=sysargv(3]output_path=sysargv(4]secret_scope=sysargv(5]secret_key=sysargv(6]令牌=dbutils秘密得到(范围=secret_scope,关键=secret_key)如果(请求= =“提交”):get_commits(老板,回购,令牌,output_path)elif(请求= =“贡献者”):get_contributors(老板,回购,令牌,output_path)如果__name__= =“__main__”:主要()
  1. DBFS上传脚本:

    1. 去你的砖着陆页面并点击数据图标”src=数据在侧边栏。

    2. 点击浏览DBFS

    3. 在DBFS文件浏览器,点击上传。的上传数据到DBFS对话框出现了。

    4. 输入路径DBFS存储脚本,点击将文件上传,或单击“浏览”,并选择Python脚本。

    5. 点击完成

步骤3:创建一个三角洲住表管道处理GitHub数据

在本节中,您创建了一个三角洲生活表管道将原始的GitHub数据转换成表,可以分析了砖SQL查询。创建管道,请执行以下步骤:

  1. 在侧边栏中,单击新图标”src=并选择笔记本从菜单中。的创建笔记本对话框出现了。

  2. 默认的语言,并选择输入一个名称Python。你可以把集群设置为默认值。三角洲生活表运行时创建一个集群在它运行你的管道。

  3. 点击创建

  4. Python代码示例复制并粘贴到您的新笔记本。您可以将示例代码添加到笔记本的单细胞或多细胞。

    进口dltpyspark.sql.functions进口*def解析(df):返回(dfwithColumn(“author_date”,to_timestamp(上校(“commit.author.date”)))withColumn(“author_email”,上校(“commit.author.email”))withColumn(“author_name”,上校(“commit.author.name”))withColumn(“comment_count”,上校(“commit.comment_count”))withColumn(“committer_date”,to_timestamp(上校(“commit.committer.date”)))withColumn(“committer_email”,上校(“commit.committer.email”))withColumn(“committer_name”,上校(“commit.committer.name”))withColumn(“消息”,上校(“commit.message”))withColumn(“沙”,上校(“commit.tree.sha”))withColumn(“tree_url”,上校(“commit.tree.url”))withColumn(“url”,上校(“commit.url”))withColumn(“verification_payload”,上校(“commit.verification.payload”))withColumn(“verification_reason”,上校(“commit.verification.reason”))withColumn(“verification_signature”,上校(“commit.verification.signature”))withColumn(“verification_verified”,上校(“commit.verification.signature”)(“字符串”))下降(“提交”))@dlt(评论=“生GitHub提交”)defgithub_commits_raw():df=火花json(火花相依得到(“commits-path”))返回解析(df选择(“提交”))@dlt(评论=“作者提交的信息”)defcommits_by_author():返回(dlt(“github_commits_raw”)withColumnRenamed(“author_date”,“日期”)withColumnRenamed(“author_email”,“电子邮件”)withColumnRenamed(“author_name”,“名称”)选择(“沙”,“日期”,“电子邮件”,“名称”))@dlt(评论=“GitHub库贡献者”)defgithub_contributors_raw():返回(火花readStream格式(“cloudFiles”)选项(“cloudFiles.format”,“json”)负载(火花相依得到(“contribs-path”)))
  5. 在侧边栏中,单击工作图标”src=工作流,单击三角洲生活表选项卡,并单击创建管道

  6. 例如,给管道起一个名字变换GitHub数据

  7. 笔记本库字段中,输入你的笔记本或点击之路文件选择器图标”src=选择笔记本。

  8. 点击添加配置。在关键文本框中,输入commits-path。在价值文本框,输入DBFS GitHub的路径,将书面记录。这可以是任何你选择路径和路径时将使用相同配置的第一个Python任务时创建工作流

  9. 点击添加配置一次。在关键文本框中,输入contribs-path。在价值文本框,输入DBFS GitHub的路径,将书面记录。这可以是任何你选择路径和路径时将使用相同配置第二个Python任务时创建工作流

  10. 目标例如,字段中,输入目标数据库github_tables。设定一个目标数据库输出数据发布到metastore和下游需要查询分析产生的数据管道。

  11. 点击保存

步骤4:创建一个工作流来摄取和GitHub转换数据

在GitHub数据分析和可视化数据砖SQL,您需要摄取和准备数据。创建一个工作流来完成这些任务,执行以下步骤:

创建一个砖工作并添加第一个任务

  1. 去你的砖的着陆页,做以下之一:

    • 在侧边栏中,单击工作图标”src=工作流并点击创建工作按钮”src=

    • 在侧边栏中,单击新图标”src=并选择工作从菜单中。

  2. 在任务出现在对话框任务选项卡中,取代添加一个名称为你的工作…对你的工作名称,例如,GitHub分析工作流

  3. 任务名称任务,输入一个名称,例如,get_commits

  4. 类型中,选择Python脚本

  5. 中,选择DBFS / S3

  6. 路径,在DBFS输入脚本的路径。

  7. 参数Python脚本,输入以下参数:

    [" <所有者>”、“<回购>”,“提交”,“< DBFS-output-dir >”、“< scope-name >”、“< github-token-key >”)

    • 取代<人>库所有者的名称。例如,要获取的记录github.com/databrickslabs/overwatch库,输入databrickslabs

    • 取代<回购>例如,存储库名称看守

    • 取代< DBFS-output-dir >在DBFS存储路径记录从GitHub获取。

    • 取代< scope-name >秘密范围的名称创建存储GitHub的令牌。

    • 取代< github-token-key >关键的名字你分配到GitHub令牌。

  8. 点击保存任务

添加另一个任务

  1. 点击添加任务按钮”src=您刚才创建的任务。

  2. 任务名称任务,输入一个名称,例如,get_contributors

  3. 类型,选择Python脚本任务类型。

  4. 中,选择DBFS / S3

  5. 路径,在DBFS输入脚本的路径。

  6. 参数Python脚本,输入以下参数:

    [" <所有者>”、“<回购>”,“贡献者”,“< DBFS-output-dir >”、“< scope-name >”、“< github-token-key >”)

    • 取代<人>库所有者的名称。例如,要获取的记录github.com/databrickslabs/overwatch库,输入databrickslabs

    • 取代<回购>例如,存储库名称看守

    • 取代< DBFS-output-dir >在DBFS存储路径记录从GitHub获取。

    • 取代< scope-name >秘密范围的名称创建存储GitHub的令牌。

    • 取代< github-token-key >关键的名字你分配到GitHub令牌。

  7. 点击保存任务

添加一个任务来转换数据

  1. 点击添加任务按钮”src=您刚才创建的任务。

  2. 任务名称任务,输入一个名称,例如,transform_github_data

  3. 类型中,选择三角洲生活表管道并输入任务的名称。

  4. 管道,选择创建的管道步骤3:创建一个三角洲住表管道处理GitHub数据

  5. 点击创建

第五步:运行数据转换工作流程

点击现在运行按钮”src=运行工作流。查看细节的运行,单击链接开始时间列的运行工作运行视图。单击每个任务,查看任务运行的细节。

第六步:查看输出数据(可选)在工作流运行完成后,执行以下步骤:

  1. 在运行细节视图中,单击三角洲生活表任务。

  2. 任务运行细节在面板中,单击管道的名字管道。的管道的细节页面显示。

  3. 选择commits_by_author表中管道DAG。

  4. 点击旁边的表名Metastorecommits_by_author面板。数据浏览页面打开。

在数据资源管理器,您可以查看表模式,为数据样本数据,和其他细节。按照相同的步骤来查看数据github_contributors_raw表。

第七步:删除GitHub的数据

在现实的应用程序中,您可能会不断摄取和处理数据。因为这个示例下载和处理整个数据集,您必须删除已经下载GitHub的数据重新运行工作流时防止错误。删除下载的数据,执行以下步骤:

  1. 创建一个新的笔记本和第一个单元格中输入以下命令:

    dbutilsfsrm(“< commits-path”,真正的)dbutilsfsrm(“< contributors-path”,真正的)

    取代< commits-path >< contributors-path >与DBFS路径创建Python任务时配置。

  2. 点击运行菜单”src=并选择运行单元

您还可以添加这个笔记本作为工作流任务。

第八步:创建砖SQL查询

在运行工作流和创建所需的表之后,创建查询分析准备数据。创建查询和可视化的例子中,执行以下步骤:

显示的十大贡献者

  1. 点击下面的图标数据砖的标志砖的标志”src=在侧边栏并选择SQL

  2. 点击创建一个查询打开数据砖SQL查询编辑器。

  3. 确保目录设置为hive_metastore。点击默认的旁边hive_metastore并设置数据库目标值设置在三角洲地区的生活表管道。

  4. 新的查询选项卡中,输入以下查询:

    选择date_part(“年”,日期)作为一年,date_part(“月”,日期)作为,的名字,(1)commits_by_author在哪里的名字(选择的名字commits_by_author集团通过的名字订单通过(的名字)DESC限制10)date_part(“年”,日期)> =2022年集团通过的名字,一年,订单通过一年,,的名字
  5. 单击新的查询例如,标签和重命名查询提交通过10贡献者

  6. 默认情况下,结果显示为一个表。改变数据可视化,例如,使用一个条形图,结果面板中单击乔布斯垂直省略”src=并点击编辑

  7. 可视化类型中,选择酒吧

  8. X列中,选择

  9. Y列中,选择数(1)

  10. 集团中,选择的名字

  11. 点击保存

显示前20名贡献者

  1. 点击+ >创建新的查询并确保目录设置为hive_metastore。点击默认的旁边hive_metastore并设置数据库目标值设置在三角洲地区的生活表管道。

  2. 输入以下查询:

    选择登录,(贡献作为整数)github_contributors_raw订单通过贡献DESC限制20.
  3. 单击新的查询例如,标签和重命名查询20.贡献者

  4. 改变默认的可视化表,结果面板中,单击乔布斯垂直省略”src=并点击编辑

  5. 可视化类型中,选择酒吧

  6. X列中,选择登录

  7. Y列中,选择贡献

  8. 点击保存

显示总提交作者

  1. 点击+ >创建新的查询并确保目录设置为hive_metastore。点击默认的旁边hive_metastore并设置数据库目标值设置在三角洲地区的生活表管道。

  2. 输入以下查询:

    选择的名字,(1)提交commits_by_author集团通过的名字订单通过提交DESC限制10
  3. 单击新的查询例如,标签和重命名查询提交通过作者

  4. 改变默认的可视化表,结果面板中,单击乔布斯垂直省略”src=并点击编辑

  5. 可视化类型中,选择酒吧

  6. X列中,选择的名字

  7. Y列中,选择提交

  8. 点击保存

第九步:创建一个仪表板

  1. 在侧边栏中,单击仪表板图标”src=指示板

  2. 点击创建仪表板

  3. 例如,输入一个名称的仪表板GitHub分析

  4. 为每个查询中创建和可视化第八步:创建砖SQL查询,点击添加>可视化并选择每个可视化。

第十步:添加SQL任务工作流

新的查询任务添加到工作流中创建创建一个砖工作并添加第一个任务,为每个查询中创建第八步:创建砖SQL查询:

  1. 点击工作图标”src=工作流在侧边栏。

  2. 的名字列,单击工作名称。

  3. 单击任务选项卡。

  4. 点击添加任务按钮”src=下面的最后一个任务。

  5. 为任务,输入一个名称类型选择SQL,在SQL任务选择查询

  6. 选择查询SQL查询

  7. SQL仓库,选择一个serverless SQL仓库或专业SQL仓库运行的任务。

  8. 点击创建

步骤11:添加一个仪表板的任务

  1. 点击添加任务按钮”src=下面的最后一个任务。

  2. 为任务,输入一个名称类型中,选择SQL,在SQL任务选择指示板

  3. 选择仪表板中创建第九步:创建一个仪表板

  4. SQL仓库,选择一个serverless SQL仓库或专业SQL仓库运行的任务。

  5. 点击创建

步骤12:运行完整的工作流

工作流运行,点击现在运行按钮”src=。查看细节的运行,单击链接开始时间列的运行工作运行视图。

步骤13:查看结果

查看运行时的结果完成后,点击最后一个仪表板的任务,然后单击仪表板下名字SQL仪表板在右侧面板中。