在 Databricks 筆記本中開發程式代碼
此頁面描述如何在 Databricks 筆記本中開發程式代碼,包括自動完成、Python 和 SQL 的自動格式化、在筆記本中結合 Python 和 SQL,以及追蹤筆記本版本歷程記錄。
如需編輯器可用之進階功能的詳細資訊,例如自動完成、變數選取、多數據指標支援和並存差異,請參閱 使用 Databricks 筆記本和檔案編輯器。
當您使用筆記本或檔案編輯器時,可以使用 Databricks Assistant 來協助您產生、說明和偵錯程式代碼。 如需詳細資訊,請參閱 使用 Databricks Assistant 。
Databricks 筆記本也包含適用於 Python 筆記本的內建互動式調試程式。 請參閱 偵錯筆記本。
從 Databricks Assistant 取得程式代碼撰寫說明
Databricks Assistant 是一個內容感知 AI 助理,您可以使用對話式介面與互動,讓您在 Databricks 內更具生產力。 您可以使用英文描述您的工作,並讓小幫手產生 Python 程式代碼或 SQL 查詢、說明複雜的程式碼,以及自動修正錯誤。 助理會使用 Unity 目錄元數據來了解整個公司的數據表、數據行、描述和熱門數據資產,以提供個人化的回應。
Databricks Assistant 可協助您完成下列工作:
- 產生程序代碼。
- 偵錯程式代碼,包括識別及建議錯誤修正。
- 轉換和優化程序代碼。
- 說明程序代碼。
- 協助您在 Azure Databricks 檔中尋找相關信息。
如需使用 Databricks Assistant 協助您更有效率地撰寫程式代碼的相關信息,請參閱 使用 Databricks Assistant。 如需 Databricks Assistant 的一般資訊,請參閱 DatabricksIQ 支援的功能。
存取筆記本以進行編輯
若要開啟筆記本,請使用工作區搜尋函式或使用工作區瀏覽器瀏覽至筆記本,然後按鍵的名稱或圖示。
瀏覽數據
使用架構瀏覽器來探索筆記本可用的 Unity Catalog 物件。 按兩下 筆記本左側以開啟架構瀏覽器。
[ 為您使用] 按鈕只會顯示您在目前會話或先前標示為 [我的最愛] 的物件。
當您在 [篩選] 方塊中輸入文字時,顯示會變更,只顯示包含您輸入之文字的物件。 只有目前開啟或已在目前會話中開啟的物件才會出現。 [ 篩選 ] 方塊不會完整搜尋筆記本可用的目錄、架構、數據表和磁碟區。
若要開啟 kebab 功能表,請將游標停留在物件名稱上方,如下所示:
如果對象是資料表,您可以執行下列動作:
- 自動建立並執行數據格,以顯示資料表中的數據預覽。 從數據表的 Kebab 選單選取新儲存格中的 [預覽]。
- 在目錄總管中檢視目錄、架構或數據表。 從 Kebab 功能表選取 [ 在目錄總 管中開啟]。 隨即開啟新的索引標籤,其中顯示選取的物件。
- 取得目錄、架構或數據表的路徑。 選取 [ 複製...物件之 Kebab 功能表的路徑 。
- 將數據表新增至我的最愛。 從數據表的 Kebab 選單選取 [新增至我的最愛]。
如果對象是目錄、架構或磁碟區,您可以複製對象的路徑,或在目錄總管中開啟它。
若要將資料表或資料列名稱直接插入儲存格中:
- 在您要輸入名稱的位置,按下儲存格中的數據指標。
- 將游標移至架構瀏覽器中的數據表名稱或資料行名稱。
- 按兩下出現在物件名稱右邊的雙箭號 。
鍵盤快速鍵
若要顯示鍵盤快捷方式,請選取 [說明 > 鍵盤] 快捷方式。 可用的鍵盤快捷方式取決於游標是否位於程式代碼數據格(編輯模式)或否(命令模式)。
命令選擇區
您可以使用命令選擇區快速在筆記本中執行動作。 若要開啟筆記本動作面板,請按兩下 下角,或使用MacOS上的快捷方式 Cmd + Shift + P ,或在 Windows 上使用 Ctrl + Shift + P 。
尋找及取代文字
若要尋找並取代筆記本內的文字,請選取 [ 編輯 > 尋找和取代]。 目前的相符專案會以橙色醒目提示,所有其他相符項目都會以黃色反白顯示。
若要取代目前的相符專案,請按兩下 [取代]。 若要取代筆記本中的所有相符專案,請按兩下 [全部取代]。
若要在相符項目之間移動,請按兩下 [ 上一 頁] 和 [下一步] 按鈕。 您也可以按shift+enter鍵,然後分別進入上一個和下一個相符專案。
若要關閉尋找並取代工具,請按兩下 或按 esc 鍵。
執行選取的儲存格
您可以執行單一儲存格或儲存格集合。 若要選取單一單元格,請單擊單元格中的任何位置。 若要選取多個單元格,請按住 Command
MacOS 上的按鍵或 Ctrl
Windows 上的按鍵,然後按下文字區域以外的單元格,如螢幕快照所示。
若要執行選取的行為,此命令的行為取決於筆記本所連結的叢集。
- 在執行 Databricks Runtime 13.3 LTS 或以下的叢集上,會個別執行選取的單元格。 如果儲存格中發生錯誤,則執行會繼續進行後續儲存格。
- 在執行 Databricks Runtime 14.0 或更新版本或 SQL 倉儲的叢集上,選取的數據格會以批次方式執行。 任何錯誤都停止執行,而且您無法取消個別儲存格的執行。 您可以使用 [中斷] 按鈕停止執行所有儲存格。
將程式代碼模組化
重要
這項功能處於公開預覽狀態。
使用 Databricks Runtime 11.3 LTS 和更新版本,您可以在 Azure Databricks 工作區中建立和管理原始程式碼檔案,然後視需要將這些檔案匯入筆記本。
如需使用原始碼檔案的詳細資訊,請參閱 在 Databricks Notebook 和使用 Python 和 R 模組之間共用程式代碼。
執行選取的文字
您可以在筆記本數據格中反白顯示程式代碼或 SQL 語句,並只執行該選取範圍。 當您想要快速反覆運算程式代碼和查詢時,這會很有用。
反白顯示您想要執行的行。
選取 [執行執行選取的文字],或使用鍵盤快捷方式
Ctrl
Shift
Enter
++> 如果未反白顯示任何文字, 執行選取的文字 會執行目前的行。
如果您在儲存格中使用混合語言,則必須%<language>
在選取範圍中包含這一行。
如果反白顯示選取範圍中有任何專案,則執行選取的文字 也會執行折疊的程序代碼。
支援、、 和 %sh
等%run
%pip
特殊儲存格命令。
您無法在 具有多個輸出索引標籤的儲存格上使用 [執行選取的文字 ] (也就是您已定義數據設定檔或視覺效果的儲存格)。
格式化程序代碼儲存格
Azure Databricks 提供工具,可讓您快速且輕鬆地在筆記本數據格中格式化 Python 和 SQL 程式代碼。 這些工具可減少將程式代碼格式化的工作,並協助在您的筆記本中強制執行相同的編碼標準。
Python 黑色格式子連結庫
重要
這項功能處於公開預覽狀態。
Azure Databricks 支援在 筆記本中使用黑色 的 Python 程式代碼格式設定。 筆記本必須附加至已安裝 和 black
tokenize-rt
Python 套件的叢集。
在 Databricks Runtime 11.3 LTS 和更新版本上,Azure Databricks 預安裝 black
與 tokenize-rt
。 您可以直接使用格式器,而不需要安裝這些連結庫。
在 Databricks Runtime 10.4 LTS 和以下版本上,您必須在筆記本或叢集上安裝和tokenize-rt==4.2.1
從 PyPI,black==22.3.0
才能使用 Python 格式器。 您可以在筆記本中執行下列命令:
%pip install black==22.3.0 tokenize-rt==4.2.1
或 在您的叢集上安裝連結庫。
如需安裝連結庫的詳細資訊,請參閱 Python 環境管理。
針對 Databricks Git 資料夾中的檔案和筆記本,您可以根據 pyproject.toml
檔案設定 Python 格式器。 若要使用此功能,請在 Git 資料夾根目錄中建立檔案pyproject.toml
,並根據 Black 組態格式進行設定。 編輯檔案中的 [tool.black] 區段。 當您格式化該 Git 資料夾中的任何檔案和筆記本時,就會套用設定。
如何格式化 Python 和 SQL 數據格
您必須擁有 筆記本的 CAN EDIT 許可權 ,才能格式化程式代碼。
Azure Databricks 會使用 Gethue/sql-formatter 連結庫來格式化 SQL 和適用於 Python 的 黑色 程式代碼格式器。
您可以透過下列方式觸發格式器:
格式化單一儲存格
格式化多個儲存格
選取多個儲存格,然後選取 [編輯>格式儲存格]。 如果您選取多個語言的儲存格,則只會格式化 SQL 和 Python 數據格。 這包括使用
%sql
與%python
的 。格式化筆記本中的所有 Python 和 SQL 數據格
選取 [ 編輯 > 格式筆記本]。 如果您的筆記本包含一個以上的語言,則只會格式化 SQL 和 Python 數據格。 這包括使用
%sql
與%python
的 。
程式代碼格式限制
- Black 會 強制執行 4 個空間縮排的 PEP 8 標準。 無法設定縮排。
- 不支援格式化 SQL UDF 內的內嵌 Python 字串。 同樣地,不支援在 Python UDF 內格式化 SQL 字串。
版本歷程記錄
Azure Databricks 筆記本會維護筆記本版本的歷程記錄,讓您檢視和還原筆記本先前的快照集。 您可以在版本上執行下列動作:新增批注、還原和刪除版本,以及清除版本歷程記錄。
您也可以 在 Databricks 中同步處理工作與遠端 Git 存放庫。
若要存取筆記本版本,請按下 右側提要欄位。 筆記本版本歷程記錄隨即出現。 您也可以選取 [檔案 > 版本歷程記錄]。
新增註解
若要將批注新增至最新版本:
按兩下版本。
按兩下 [ 立即儲存]。
在 [儲存筆記本版本] 對話框中,輸入批注。
按一下 [檔案] 。 筆記本版本會與輸入的批註一起儲存。
還原版本
若要還原版本:
按兩下版本。
按兩下 [ 還原此版本]。
按一下 [確認]。 選取的版本會變成最新版的筆記本。
刪除版本
若要刪除版本項目:
按兩下版本。
點選垃圾桶圖示 。
按兩下 [ 是],清除。 選取的版本會從歷程記錄中刪除。
清除版本歷程記錄
在清除版本歷程記錄之後,就無法復原版本歷程記錄。
若要清除筆記本的版本歷程記錄:
- 選取 [ 檔案 > 清除版本歷程記錄]。
- 按兩下 [ 是,清除]。 筆記本版本歷程記錄已清除。
筆記本中的程式代碼語言
設定預設語言
筆記本的預設語言會出現在筆記本名稱旁邊。
若要變更默認語言,請按下語言按鈕,然後從下拉功能表中選取新語言。 為了確保現有的命令能夠繼續運作,先前預設語言的命令會自動加上語言 magic 命令的前置詞。
混合語言
根據預設,儲存格會使用筆記本的預設語言。 您可以單擊語言按鈕,然後從下拉功能表中選取語言,以覆寫單元格中的默認語言。
或者,您可以在儲存格開頭使用語言 magic 命令 %<language>
。 支援的 magic 命令包括: %python
、 %r
、 %scala
、 和 %sql
。
注意
當您叫用語言 magic 命令時,命令會分派至筆記本的執行內容中的 REPL。 以某個語言定義的變數(因此在該語言的 REPL 中也無法使用另一種語言的 REPL。 REPL 只能透過外部資源分享狀態,例如 DBFS 中的檔案或物件記憶體中的物件。
筆記本也支援一些輔助魔術命令:
%sh
:可讓您在筆記本中執行殼層程序代碼。 如果殼層命令具有非零結束狀態,則若要使單元格失敗,請新增-e
選項。 此命令只會在 Apache Spark 驅動程式上執行,而不是背景工作角色。 若要在所有節點上執行殼層命令,請使用 init 腳本。%fs
:可讓您使用dbutils
檔案系統命令。 例如,若要執行dbutils.fs.ls
命令來列出檔案,您可以改為指定%fs ls
。 如需詳細資訊,請參閱 使用 Azure Databricks 上的檔案。%md
:可讓您包括各種類型的文件,包括文字、影像,以及數學公式和方程式。 請參閱下一節。
Python 命令中的 SQL 語法醒目提示和自動完成
當您在 Python 命令中使用 SQL 時,可以使用語法醒目提示和 SQL 自動完成 ,例如在命令中 spark.sql
。
使用 Python 探索 Python 筆記本中的 SQL 數據格結果
您可能想要使用 SQL 載入資料,並使用 Python 來探索數據。 在 Databricks Python 筆記本中,SQL 語言數據格中的數據表結果會自動以指派給變數 _sqldf
的 Python DataFrame 提供。
在 Databricks Runtime 13.3 LTS 和更新版本中,您也可以使用 IPython 的輸出快取系統來存取 DataFrame 結果。 提示計數器會出現在單元格結果底部顯示的輸出訊息中。 針對顯示的範例,您會將結果參考為 Out[2]
。
注意
_sqldf
變數可能會在每次執行數據格時%sql
重新指派。 若要避免遺失 DataFrame 結果的參考,請在執行下一個%sql
數據格之前,將它指派給新的變數名稱:new_dataframe_name = _sqldf
如果查詢使用 小工具 進行參數化,則結果無法做為 Python DataFrame 使用。
如果查詢使用 關鍵詞
CACHE TABLE
或UNCACHE TABLE
,則結果無法作為 Python 數據框架使用。
這個螢幕快照顯示範例:
平行執行 SQL 資料格
當命令正在執行,且筆記本已連結至互動式叢集時,您可以使用目前的命令同時執行 SQL 資料格。 SQL 儲存格會在新的平行工作階段中執行。
若要平行執行儲存格:
按一下 [立即執行]。 數據格會立即執行。
因為儲存格是在新的工作階段中執行,因此平行執行的儲存格不支援暫存檢視、UDF 和 隱含 Python DataFrame (_sqldf
)。 此外,在平行執行期間會使用預設目錄和資料庫名稱。 如果您的程式代碼參考不同目錄或資料庫中的數據表,您必須使用三層命名空間 (catalog
..schema
.table
) 來指定資料表名稱。
在 SQL 倉儲上執行 SQL 數據格
您可以在 SQL 倉儲的 Databricks 筆記本中執行 SQL 命令,這是針對 SQL 分析優化的計算類型。 請參閱 搭配 SQL 倉儲使用筆記本。
顯示影像
Azure Databricks 支援在 Markdown 單元格中顯示影像。 您可以顯示儲存在工作區、磁碟區或 FileStore 中的影像。
顯示儲存在工作區中的影像
您可以使用絕對路徑或相對路徑來顯示儲存在工作區中的影像。 若要顯示儲存在工作區中的影像,請使用下列語法:
%md
![my_test_image](/Workspace/absolute/path/to/image.png)
![my_test_image](./relative/path/to/image.png)
顯示儲存在磁碟區中的影像
您可以使用絕對路徑來顯示儲存在磁碟區中的影像。 若要顯示儲存在磁碟區中的影像,請使用下列語法:
%md
![my_test_image](/Volumes/absolute/path/to/image.png)
顯示儲存在 FileStore 中的影像
若要顯示儲存在 FileStore 中的影像,請使用下列語法:
%md
![my_test_image](files/image.png)
例如,假設您在 FileStore 中有 Databricks 標誌圖像檔:
dbfs ls dbfs:/FileStore/
databricks-logo-mobile.png
當您在 Markdown 儲存格中包含下列程式代碼時:
影像會在數據格中轉譯:
拖放影像
您可以將本機文件系統中的影像拖放到 Markdown 儲存格。 影像會上傳至目前的 Workspace 目錄,並顯示在數據格中。
顯示數學方程式
筆記本支援 KaTeX 來顯示數學公式和方程式。 例如,
%md
\\(c = \\pm\\sqrt{a^2 + b^2} \\)
\\(A{_i}{_j}=B{_i}{_j}\\)
$$c = \\pm\\sqrt{a^2 + b^2}$$
\\[A{_i}{_j}=B{_i}{_j}\\]
轉譯為:
及
%md
\\( f(\beta)= -Y_t^T X_t \beta + \sum log( 1+{e}^{X_t\bullet\beta}) + \frac{1}{2}\delta^t S_t^{-1}\delta\\)
where \\(\delta=(\beta - \mu_{t-1})\\)
轉譯為:
包含 HTML
您可以使用 函 displayHTML
式在筆記本中包含 HTML。 如需如何執行這項操作的範例,請參閱 筆記本 中的 HTML、D3 和 SVG。
注意
iframe displayHTML
會從網域 databricksusercontent.com
提供,而 iframe 沙盒包含 allow-same-origin
屬性。 databricksusercontent.com
必須可從瀏覽器存取。 如果公司網路目前遭到封鎖,則必須將其新增至允許清單。
連結至其他筆記本
您可以使用相對路徑連結至 Markdown 儲存格中的其他筆記本或資料夾。 指定 href
錨點標記的 屬性做為相對路徑,從 開始 $
,然後遵循與 Unix 檔案系統相同的模式:
%md
<a href="$./myNotebook">Link to notebook in same folder as current notebook</a>
<a href="$../myFolder">Link to folder in parent folder of current notebook</a>
<a href="$./myFolder2/myNotebook2">Link to nested notebook</a>