使用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倉庫運行的任務。
點擊創建。