使用SQL在砖砖的工作
您可以使用SQL任务类型的砖的工作,允许您创建、时间表,操作,和监控工作流,包括砖等SQL对象的查询,指示板和警报。例如,您的工作流可以摄取数据,准备数据,使用砖SQL查询的执行分析,然后在砖SQL仪表盘的显示结果。
本文提供了一个示例流程,创建一个砖SQL仪表板显示指标GitHub的贡献。在本例中,您将:
使用Python脚本和摄取GitHub数据GitHub REST API。
将管道使用三角洲住GitHub数据表。
触发砖SQL查询的执行分析准备数据。
在砖SQL的仪表板显示分析。
在你开始之前
你需要完成这个介绍如下:
一个GitHub个人访问令牌。这令牌必须有回购许可。
砖SQL和SQL serverless仓库或专业SQL仓库。看到可用的仓库类型是什么?。
一个砖秘密的范围。秘密范围用于安全地储存GitHub令牌。看到步骤1:将GitHub令牌存储在一个秘密。
步骤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脚本,但是您还可以使用砖回购存储和管理脚本。
这个脚本保存到您的本地磁盘上定位:
进口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业主回购请求output-dir secret-scope秘钥”)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上传脚本:
去你的砖着陆页面并点击数据在侧边栏。
点击浏览DBFS。
在DBFS文件浏览器,点击上传。的上传数据到DBFS对话框出现了。
输入路径DBFS存储脚本,点击将文件上传,或单击“浏览”,并选择Python脚本。
点击完成。
步骤3:创建一个三角洲住表管道处理GitHub数据
在本节中,您创建了一个三角洲生活表管道将原始的GitHub数据转换成表,可以分析了砖SQL查询。创建管道,请执行以下步骤:
在侧边栏中,单击新并选择笔记本从菜单中。的创建笔记本对话框出现了。
在默认的语言,并选择输入一个名称Python。你可以把集群设置为默认值。三角洲生活表运行时创建一个集群在它运行你的管道。
点击创建。
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”)))
在侧边栏中,单击工作流,单击三角洲生活表选项卡,并单击创建管道。
例如,给管道起一个名字
变换GitHub数据
。在笔记本库字段中,输入你的笔记本或点击之路选择笔记本。
点击添加配置。在
关键
文本框中,输入commits-path
。在价值
文本框,输入DBFS GitHub的路径,将书面记录。这可以是任何你选择路径和路径时将使用相同配置的第一个Python任务时创建工作流。点击添加配置一次。在
关键
文本框中,输入contribs-path
。在价值
文本框,输入DBFS GitHub的路径,将书面记录。这可以是任何你选择路径和路径时将使用相同配置第二个Python任务时创建工作流。在目标例如,字段中,输入目标数据库
github_tables
。设定一个目标数据库输出数据发布到metastore和下游需要查询分析产生的数据管道。点击保存。
步骤4:创建一个工作流来摄取和GitHub转换数据
在GitHub数据分析和可视化数据砖SQL,您需要摄取和准备数据。创建一个工作流来完成这些任务,执行以下步骤:
创建一个砖工作并添加第一个任务
去你的砖的着陆页,做以下之一:
在侧边栏中,单击工作流并点击。
在侧边栏中,单击新并选择工作从菜单中。
在任务出现在对话框任务选项卡中,取代添加一个名称为你的工作…对你的工作名称,例如,
GitHub分析工作流
。在任务名称任务,输入一个名称,例如,
get_commits
。在类型中,选择Python脚本。
在源中,选择DBFS / S3。
在路径,在DBFS输入脚本的路径。
在参数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令牌。
点击保存任务。
添加另一个任务
点击您刚才创建的任务。
在任务名称任务,输入一个名称,例如,
get_contributors
。在类型,选择Python脚本任务类型。
在源中,选择DBFS / S3。
在路径,在DBFS输入脚本的路径。
在参数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令牌。
点击保存任务。
添加一个任务来转换数据
点击您刚才创建的任务。
在任务名称任务,输入一个名称,例如,
transform_github_data
。在类型中,选择三角洲生活表管道并输入任务的名称。
在管道,选择创建的管道步骤3:创建一个三角洲住表管道处理GitHub数据。
点击创建。
第六步:查看输出数据(可选)在工作流运行完成后,执行以下步骤:
在运行细节视图中,单击三角洲生活表任务。
在任务运行细节在面板中,单击管道的名字管道。的管道的细节页面显示。
选择
commits_by_author
表中管道DAG。点击旁边的表名Metastore在commits_by_author面板。数据浏览页面打开。
在数据资源管理器,您可以查看表模式,为数据样本数据,和其他细节。按照相同的步骤来查看数据github_contributors_raw
表。
第七步:删除GitHub的数据
在现实的应用程序中,您可能会不断摄取和处理数据。因为这个示例下载和处理整个数据集,您必须删除已经下载GitHub的数据重新运行工作流时防止错误。删除下载的数据,执行以下步骤:
创建一个新的笔记本和第一个单元格中输入以下命令:
dbutils。fs。rm(“< commits-path”,真正的)dbutils。fs。rm(“< contributors-path”,真正的)
取代
< commits-path >
和< contributors-path >
与DBFS路径创建Python任务时配置。点击并选择运行单元。
您还可以添加这个笔记本作为工作流任务。
第八步:创建砖SQL查询
在运行工作流和创建所需的表之后,创建查询分析准备数据。创建查询和可视化的例子中,执行以下步骤:
显示的十大贡献者
点击下面的图标数据砖的标志在侧边栏并选择SQL。
点击创建一个查询打开数据砖SQL查询编辑器。
确保目录设置为hive_metastore。点击默认的旁边hive_metastore并设置数据库目标值设置在三角洲地区的生活表管道。
在新的查询选项卡中,输入以下查询:
选择date_part(“年”,日期)作为一年,date_part(“月”,日期)作为月,的名字,数(1)从commits_by_author在哪里的名字在(选择的名字从commits_by_author集团通过的名字订单通过数(的名字)DESC限制10)和date_part(“年”,日期)> =2022年集团通过的名字,一年,月订单通过一年,月,的名字
单击新的查询例如,标签和重命名查询
提交通过月前10贡献者
。默认情况下,结果显示为一个表。改变数据可视化,例如,使用一个条形图,结果面板中单击并点击编辑。
在可视化类型中,选择酒吧。
在X列中,选择月。
在Y列中,选择数(1)。
在集团中,选择的名字。
点击保存。
第九步:创建一个仪表板
在侧边栏中,单击指示板
点击创建仪表板。
例如,输入一个名称的仪表板
GitHub分析
。为每个查询中创建和可视化第八步:创建砖SQL查询,点击添加>可视化并选择每个可视化。
第十步:添加SQL任务工作流
新的查询任务添加到工作流中创建创建一个砖工作并添加第一个任务,为每个查询中创建第八步:创建砖SQL查询:
点击工作流在侧边栏。
在的名字列,单击工作名称。
单击任务选项卡。
点击下面的最后一个任务。
为任务,输入一个名称类型选择SQL,在SQL任务选择查询。
选择查询SQL查询。
在SQL仓库,选择一个serverless SQL仓库或专业SQL仓库运行的任务。
点击创建。
步骤11:添加一个仪表板的任务
点击下面的最后一个任务。
为任务,输入一个名称类型中,选择SQL,在SQL任务选择指示板。
选择仪表板中创建第九步:创建一个仪表板。
在SQL仓库,选择一个serverless SQL仓库或专业SQL仓库运行的任务。
点击创建。