开始
加载和管理数据
处理数据
政府
参考和资源
2023年2月10日更新
给我们反馈
预览
SQL任务完成公共预览.
可以在Databricks作业中使用SQL任务类型,允许您创建、调度、操作和监视包含Databricks SQL对象(如查询、仪表板和警报)的工作流。例如,您的工作流可以摄取数据、准备数据、使用Databricks SQL查询执行分析,然后在Databricks SQL仪表板中显示结果。
本文提供了一个创建Databricks SQL仪表板的工作流示例,该仪表板显示GitHub贡献的指标。在这个例子中,你将:
摄取GitHub数据使用Python脚本和GitHub REST API.
使用Delta Live Tables管道转换GitHub数据。
Trigger Databricks对准备好的数据执行分析的SQL查询。
在Databricks SQL仪表板中显示分析结果。
您需要以下内容来完成此演练:
一个GitHub个人访问令牌.标记必须具有回购许可。
Databricks SQL和一个无服务器SQL仓库或专业SQL仓库。看到什么是SQL仓库?.
一个砖秘密的范围.secret作用域用于安全地存储GitHub令牌。看到第一步:将GitHub令牌存储在一个秘密中.
Databricks建议使用秘密作用域来安全地存储和管理秘密,而不是在作业中硬编码GitHub个人访问令牌等凭证。下面的Databricks CLI命令是创建一个秘密作用域并将GitHub令牌存储在该作用域的秘密中的示例:
数据库秘密create-scope——scope 数据库秘密put——scope ——key ——string-value
取代< scope-name使用Databricks秘密作用域的名称来存储令牌。
< scope-name
取代< token-key >使用要分配给令牌的键的名称。
< token-key >
取代<标记>GitHub个人访问令牌的值。
<标记>
下面的Python脚本使用GitHub REST API从GitHub repo获取关于提交和贡献的数据。输入参数指定GitHub回购。记录保存到DBFS中由另一个输入参数指定的位置。
本例使用DBFS存储Python脚本,但您也可以使用砖回购来存储和管理脚本。
将此脚本保存到本地磁盘的某个位置:
进口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写(文件名,内容):dbutils.fs.把(文件名,内容)def主要():arg游戏=sys.argv[1:]如果len(arg游戏)<6:打印(使用方法:github-api.py owner repo request output-dir secret-scope secret-key)sys.退出(1)老板=sys.argv[1]回购=sys.argv[2]请求=sys.argv[3.]output_path=sys.argv[4]secret_scope=sys.argv[5]secret_key=sys.argv[6]令牌=dbutils.秘密.得到(范围=secret_scope,关键=secret_key)如果(请求= =“提交”):get_commits(老板,回购,令牌,output_path)elif(请求= =“贡献者”):get_contributors(老板,回购,令牌,output_path)如果__name__= =“__main__”:主要()
将脚本上传到DBFS:
转到你的Databricks登陆页面,然后单击数据在侧栏中。
点击浏览DBFS.
在DBFS文件浏览器中,单击上传.的上传数据到DBFS对话框出现了。
在DBFS中输入存储脚本的路径,单击拖放文件上传,或单击浏览,选择Python脚本。
点击完成.
在本节中,您将创建Delta Live Tables管道,将原始GitHub数据转换为Databricks SQL查询可以分析的表。要创建管道,请执行以下步骤:
在侧栏中,单击新并选择笔记本菜单上的。的创建笔记本对话框出现了。
在默认的语言,输入名称,选择Python.你可以离开了集群设置为默认值。Delta Live Tables运行时在运行管道之前创建一个集群。
点击创建.
复制Python代码示例并将其粘贴到新笔记本中。您可以将示例代码添加到笔记本的单个单元格或多个单元格中。
进口dlt从pyspark.sql.functions进口*def解析(df):返回(df.withColumn(“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”)))
在侧栏中,单击工作流,按Delta活动表选项卡,单击创建管道.
给管道起一个名字,例如,变换GitHub数据.
变换GitHub数据
在笔记本库字段,输入到您的笔记本的路径或单击选择笔记本。
点击添加配置.在关键文本框,输入commits-path.在价值文本框中,输入将写入GitHub记录的DBFS路径。这可以是您选择的任何路径,并且与您在配置第一个Python任务时使用的路径相同创建工作流.
关键
commits-path
价值
点击添加配置一次。在关键文本框,输入contribs-path.在价值文本框中,输入将写入GitHub记录的DBFS路径。这可以是您选择的任何路径,并且与您在配置第二个Python任务时使用的路径相同创建工作流.
contribs-path
在目标字段,输入目标数据库,例如:github_tables.设置目标数据库将输出数据发布到metastore,这对于分析管道产生的数据的下游查询是必需的。
github_tables
点击保存.
在使用Databricks SQL分析和可视化GitHub数据之前,您需要摄取和准备数据。要创建一个工作流来完成这些任务,请执行以下步骤:
转到你的Databricks登陆页面,做以下其中一项:
在侧栏中,单击工作流并点击.
在侧栏中,单击新并选择工作菜单上的。
上出现的任务对话框中的任务选项卡中,取代为你的工作添加一个名字…比如你的工作名称,GitHub分析工作流.
GitHub分析工作流
在任务名称,输入任务名称,例如:get_commits.
get_commits
在类型中,选择Python脚本.
在源中,选择DBFS / s3.
在路径,在DBFS中输入脚本的路径。
在参数,为Python脚本输入以下参数:
[" <所有者>”、“<回购>”,“提交”,“< DBFS-output-dir >”、“< scope-name >”、“< github-token-key >”)
取代<人>存储库所有者的名称。方法中获取记录github.com/databrickslabs/overwatch库,输入databrickslabs.
<人>
github.com/databrickslabs/overwatch
databrickslabs
取代回购> <例如,使用存储库名称,看守.
回购> <
看守
取代< DBFS-output-dir >DBFS中有一个路径来存储从GitHub获取的记录。
< DBFS-output-dir >
取代< scope-name >用于存储GitHub令牌的秘密作用域的名称。
< scope-name >
取代< github-token-key >与您分配给GitHub令牌的密钥的名称。
< github-token-key >
点击保存任务.
点击在刚刚创建的任务下面。
在任务名称,输入任务名称,例如:get_contributors.
get_contributors
在类型,选择Python脚本任务类型。
[" <所有者>”、“<回购>”,“贡献者”,“< DBFS-output-dir >”、“< scope-name >”、“< github-token-key >”)
在任务名称,输入任务名称,例如:transform_github_data.
transform_github_data
在类型中,选择Delta Live Tables管道并为任务输入一个名称。
在管道,选择中创建的管道步骤3:创建Delta Live Tables管道来处理GitHub数据.
点击运行工作流。查看运行的详细信息,单击开始时间列中运行的工作运行视图。单击每个任务以查看任务运行的详细信息。
在运行详细信息视图中,单击Delta Live Tables任务。
在任务运行细节面板下,单击管道名称管道.的管道的细节页面显示。
选择commits_by_author表在管道DAG。
commits_by_author
单击旁边的表名Metastore在commits_by_author面板。打开“数据资源管理器”页面。
在数据资源管理器中,可以查看数据的表模式、示例数据和其他详细信息。属性的数据按照相同的步骤查看github_contributors_raw表格
github_contributors_raw
在实际应用程序中,您可能会不断地摄取和处理数据。因为本例下载并处理整个数据集,所以必须删除已经下载的GitHub数据,以防止在重新运行工作流时出错。如需删除已下载数据,请执行以下步骤。
创建一个新的笔记本,在第一个单元格中输入以下命令:
dbutils.fs.rm(“< commits-path”,真正的)dbutils.fs.rm(“< contributors-path”,真正的)
取代< commits-path >而且< contributors-path >使用创建Python任务时配置的DBFS路径。
< commits-path >
< contributors-path >
点击并选择运行单元.
您还可以将此笔记本添加为工作流中的任务。
运行工作流并创建所需的表之后,创建查询以分析准备好的数据。要创建示例查询和可视化,请执行以下步骤:
点击Databricks logo下面的图标在侧栏中选择SQL.
点击创建查询打开Databricks SQL查询编辑器。
确保目录设置为hive_metastore.点击默认的旁边hive_metastore并将数据库设置为目标在Delta Live Tables管道中设置的值。
在新的查询选项卡,输入以下查询:
选择date_part(“年”,日期)作为一年,date_part(“月”,日期)作为月,的名字,数(1)从commits_by_author在哪里的名字在(选择的名字从commits_by_author集团通过的名字订单通过数(的名字)DESC限制10)和date_part(“年”,日期)> =2022集团通过的名字,一年,月订单通过一年,月,的名字
单击新的查询TAB键并重命名查询,例如,提交通过月前10贡献者.
提交通过月前10贡献者
默认情况下,结果显示为表格。中更改数据的可视化方式(例如,使用条形图)结果面板中单击并点击编辑.
在可视化类型中,选择酒吧.
在X列中,选择月.
在Y列中,选择数(1).
在集团中,选择的名字.
点击创建新的查询并确保目录设置为hive_metastore.点击默认的旁边hive_metastore并将数据库设置为目标在Delta Live Tables管道中设置的值。
输入以下查询:
选择登录,投(贡献作为整数)从github_contributors_raw订单通过贡献DESC限制20.
单击新的查询TAB键并重命名查询,例如,前20.贡献者.
前20.贡献者
要从默认表更改可视化,请在结果面板中,单击并点击编辑.
在X列中,选择登录.
在Y列中,选择贡献.
选择的名字,数(1)提交从commits_by_author集团通过的名字订单通过提交DESC限制10
单击新的查询TAB键并重命名查询,例如,总计提交通过作者.
总计提交通过作者
在X列中,选择的名字.
在Y列中,选择提交.
在侧栏中,单击指示板
点击创建仪表板.
为仪表板输入一个名称,例如,GitHub分析.
GitHub分析
中创建的每个查询和可视化步骤8:创建Databricks SQL查询,点击添加>可视化并选择每个可视化。
中创建的工作流中添加新的查询任务创建Databricks作业并添加第一个任务中创建的每个查询步骤8:创建Databricks SQL查询:
点击工作流在侧栏中。
在的名字列中,单击作业名称。
单击任务选项卡。
点击下面是最后一个任务。
输入任务的名称,在类型选择SQL,在SQL任务选择查询.
中的查询SQL查询.
在SQL仓库,选择无服务器SQL仓库或专业SQL仓库来运行任务。
输入任务的名称,在类型中,选择SQL,在SQL任务选择指示板.
选择中创建的仪表板步骤9:创建仪表板.
要运行工作流,单击.查看运行的详细信息,单击开始时间列中运行的工作运行视图。
要在运行完成时查看结果,请单击最后的指示板任务并单击下面的指示板名称SQL仪表板在右侧面板中。