使用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儀表板在右側麵板中。