建立、開發及維護 Synapse 筆記本
Azure Synapse Analytics 中的筆記本 (Synapse 筆記本) 是 Web 介面,可讓您建立含有即時程式碼、視覺效果和敘述文字的檔案。 筆記本是驗證想法和使用快速實驗從您的資料取得見解的絕佳位置。 筆記本也廣泛用於資料準備、資料視覺效果、機器學習和其他巨量資料案例。
Synapse 筆記本的用途:
- 無須設定即可開始使用。
- 協助使用內建的企業安全性功能保護資料的安全。
- 分析原始格式 (如 CSV、TXT 和 JSON)、經處理的檔案格式 (如 Parquet、Delta Lake 和 ORC),以及針對 Spark 和 SQL 的 SQL 表格式資料檔案等各種資料。
- 透過增強的撰寫功能和內建的資料視覺效果,提高生產力。
本文說明如何在 Synapse Studio 中使用筆記本。
建立筆記本
您可以建立新的筆記本,也可以從物件總管將現有的筆記本匯入 Synapse 工作區。 選取 [開發] 功能表。 選取 + 按鈕,然後選取 [筆記本],或以滑鼠右鍵按一下 [筆記本],然後選取 [新增筆記本] 或 [匯入]。 Synapse 筆記本可辨識標準 Jupyter Notebook IPYNB 檔案。
開發筆記本
筆記本由儲存格組成,而儲存格是個別的程式碼或文字區塊,可獨立或成群執行。
下列各節說明開發筆記本的作業:
- 新增儲存格
- 設定主要語言
- 使用多種語言
- 使用暫存資料表跨語言參考資料
- 使用 IDE 樣式 IntelliSense
- 使用程式碼片段
- 使用工具列按鈕格式化文字儲存格
- 復原或取消復原儲存格作業
- 程式碼儲存格的註解
- 移動儲存格
- 複製儲存格
- 刪除儲存格
- 摺疊儲存格輸入
- 摺疊儲存格輸出
- 使用筆記本大綱
注意
在筆記本中,系統會自動為您建立 SparkSession
執行個體,並儲存在稱為 spark
的變數中。 另外還有稱為 sc
的 SparkContext
變數。 使用者可以直接存取這些變數,但不應該變更這些變數的值。
新增儲存格
有多種方式可將新的儲存格新增至您的筆記本:
將游標停留在兩個儲存格之間的空隙,然後選取 [程式碼] 或 [Markdown]。
使用命令模式下的快速鍵。 選取 A 按鍵,將儲存格插入目前的儲存格上方。 選取 B 按鍵,將儲存格插入目前的儲存格下方。
設定主要語言
Synapse 筆記本支援四種 Apache Spark 語言:
- PySpark (Python)
- Spark (Scala)
- Spark SQL
- .NET Spark (C#)
- SparkR (R)
您可以從頂端命令列的 [語言] 下拉式清單中,為新增的儲存格設定主要語言。
使用多種語言
您可以在儲存格的開頭指定正確的語言 magic 命令,以便在同個筆記本中使用多種語言。 下表列出用來切換儲存格語言的 magic 命令。
Magic 命令 | 語言 | 描述 |
---|---|---|
%%pyspark |
Python | 針對 SparkContext 執行 Python 查詢。 |
%%spark |
Scala | 針對 SparkContext 執行 Scala 查詢。 |
%%sql |
Spark SQL | 針對 SparkContext 執行 Spark SQL 查詢。 |
%%csharp |
適用於 Spark C# 的 .NET | 針對 SparkContext 執行適用於 Spark C# 的 .NET 查詢。 |
%%sparkr |
R | 針對 SparkContext 執行 R 查詢。 |
下圖顯示如何使用 %%pyspark
magic 命令撰寫 PySpark 查詢的範例,或在 Spark(Scala) 筆記本中使用 %%sql
magic 命令撰寫 SparkSQL 查詢的範例。 筆記本的主要語言會設定為 PySpark。
使用暫存資料表跨語言參考資料
在 Synapse 筆記本中,您無法在不同語言之間直接參考資料或變數。 在 Spark 中,您可以跨語言參考暫存資料表。 以下是如何使用 Spark 暫存資料表作為因應措施,在 PySpark 和 Spark SQL 中讀取 Scala DataFrame 的範例:
在儲存格 1 中,使用 Scala 從 SQL 集區連接器讀取資料框架,並建立暫存資料表:
%%spark val scalaDataFrame = spark.read.sqlanalytics("mySQLPoolDatabase.dbo.mySQLPoolTable") scalaDataFrame.createOrReplaceTempView( "mydataframetable" )
在儲存格 2 中,使用 Spark SQL 查詢資料:
%%sql SELECT * FROM mydataframetable
在儲存格 3 中,使用 PySpark 中的資料:
%%pyspark myNewPythonDataFrame = spark.sql("SELECT * FROM mydataframetable")
使用 IDE 樣式 IntelliSense
Synapse 筆記本與 Monaco 編輯器整合,將 IDE 樣式 IntelliSense 引進儲存格編輯器。 語法醒目提示、錯誤標記和自動程式碼完成的功能,可協助您更快速撰寫程式碼和識別問題。
IntelliSense 功能在不同語言的成熟度層級不同。 使用下表來查看支援的功能。
語言 | 語法醒目提示 | 語法錯誤標記 | 語法程式碼完成功能 | 變數程式碼完成 | 系統函數程式碼完成 | 使用者函式程式碼完成 | 智慧縮排 | 程式碼摺疊功能 |
---|---|---|---|---|---|---|---|---|
PySpark (Python) | Yes | .是 | .是 | .是 | .是 | .是 | .是 | Yes |
Spark (Scala) | Yes | .是 | .是 | .是 | .是 | .是 | 無 | Yes |
Spark SQL | Yes | .是 | .是 | .是 | .是 | 無 | 無 | No |
適用於 Spark (C#) 的 .NET | Yes | .是 | .是 | .是 | .是 | .是 | .是 | Yes |
需要有作用中的 Spark 工作階段,才能受益於 .NET for Spark (C#) 的變數程式碼完成、系統函式程式碼完成和使用者函式程式碼完成。
使用程式碼片段
Synapse 筆記本提供程式碼片段,讓您更輕鬆地輸入常用的程式碼模式。 這些模式包括設定 Spark 工作階段、以 Spark DataFrame 形式讀取資料,以及使用 Matplotlib 繪製圖表。
程式碼片段出現在 IDE 樣式 IntelliSense 的快速鍵中,並混合其他建議。 程式碼片段內容配合程式碼儲存格語言。 輸入 Snippet 或任何關鍵字,即可在程式碼儲存格編輯器的程式碼片段標題中看到可用的程式碼片段。 例如,輸入 read,即可看到用於從各種資料來源讀取資料的程式碼片段清單。
使用工具列按鈕格式化文字儲存格
您可以使用文字儲存格工具列中的格式按鈕來執行常見的 Markdown 動作。 這些動作包括使文字變粗體、使文字變斜體、透過下拉功能表建立段落和標題、插入程式碼、插入未排序的清單、插入已排序的清單、插入超連結,以及從 URL 插入影像。
復原或取消復原儲存格作業
若要撤銷最新的儲存格作業,請選取 [復原] 或 [取消復原] 按鈕,或選取 Z 鍵或 Shift+Z。 您現在最多可復原或取消復原 10 個過去的儲存格作業。
支援的儲存格作業包括:
- 插入或刪除儲存格。 您可以選取 [復原] 來撤銷刪除作業。 此動作會保留文字內容與儲存格。
- 重新排序儲存格。
- 開啟或關閉參數儲存格。
- 在程式碼儲存格與 Markdown 儲存格之間轉換。
注意
您無法復原儲存格中的文字作業或註解作業。
程式碼儲存格的註解
選取筆記本工具列上的 [註解] 按鈕,以開啟 [註解] 窗格。
在程式碼儲存格中選取程式碼,選取 [註冊] 窗格上的 [新增],新增註解,然後選取 [張貼註解] 按鈕。
如有必要,您可選取註解旁的 [更多] 省略符號 (...),以執行 [編輯註解]、[解析執行緒] 和 [刪除執行緒] 動作。
移動儲存格
若要移動儲存格,請選取儲存格的左側,並將儲存格拖曳至所需的位置。
複製儲存格
若要複製儲存格,請先建立新的儲存格,然後選取原始儲存格中的所有文字、複製文字,然後將文字貼到新的儲存格中。 當您的儲存格處於編輯模式時,用以選取所有文字的傳統鍵盤快速鍵受限於此儲存格。
提示
Synapse 筆記本也提供常用程式碼模式的程式碼片段。
刪除儲存格
若要刪除儲存格,請選取資料格右側的 [刪除] 按鈕。
您也可使用命令模式下的快速鍵。 選取 Shift+D 以刪除目前的儲存格。
摺疊儲存格輸入
若要折疊目前儲存格的輸入,請在儲存格工具列上選取 [更多命令] 省略符號 (...),然後選取 [隱藏輸入]。 若要展開輸入,請在儲存格已摺疊時選取 [顯示輸入]。
摺疊儲存格輸出
若要折疊目前儲存格的輸出,請在儲存格工具列上選取 [更多命令] 省略符號 (...),然後選取 [隱藏輸出]。 若要展開輸出,請在儲存格的輸出已隱藏時選取 [顯示輸出]。
使用筆記本大綱
[大綱] (目錄) 在側邊欄視窗中顯示任何 markdown 儲存格的第一個 markdown 標頭,以方便快速導覽。 大綱側邊欄可調整大小也可摺疊,以最適合畫面大小。 若要開啟或隱藏側邊欄,請選取筆記本命令列上的 [大綱] 按鈕。
執行筆記本
您可以個別或一次全部在您的筆記本中執行程式碼儲存格。 每個儲存格的狀態和進度都會顯示在筆記本中。
注意
刪除筆記本不會自動取消目前正在執行的任何作業。 如果您需要取消作業,請移至 [監視] 中樞,然後予以手動取消。
執行儲存格
有多種方式可以在儲存格中執行程式碼:
將滑鼠停留在您要執行的儲存格上,然後選取 [執行儲存格] 按鈕,或選取 Ctrl+Enter。
使用命令模式下的快速鍵。 選取 Shift+Enter 以執行目前的儲存格,然後選取其下方的儲存格。 選取 Alt+Enter 以執行目前的儲存格,並在其下方插入新的儲存格。
執行所有儲存格
若要依序執行目前筆記本中的所有儲存格,請選取 [全部執行] 按鈕。
執行上方或下方所有儲存格
若要依序執行目前儲存格上方的所有儲存格,請展開 [全部執行] 按鈕的下拉式清單,然後選取 [執行上方的儲存格]。 選取 [執行下方的儲存格],依序執行目前儲存格下方的所有儲存格。
取消所有執行中的儲存格
若要取消執行中的儲存格或在佇列中等待的儲存格,請選取 [全部取消] 按鈕。
參考筆記本
若要參考目前筆記本範圍內的另一個筆記本,請使用 %run <notebook path>
magic 命令。 參考筆記本中定義的所有變數都可以在目前的筆記本中使用。
以下是範例:
%run /<path>/Notebook1 { "parameterInt": 1, "parameterFloat": 2.5, "parameterBool": true, "parameterString": "abc" }
筆記本參考在互動模式和管線中都有作用。
%run
magic 命令具有下列限制:
- 此命令支援巢狀呼叫,但不支援遞迴呼叫。
- 此命令僅支援傳遞絕對路徑或筆記本名稱做為參數。 它不支援相對路徑。
- 此命令目前僅支援四種參數值類型:
int
、float
、bool
和string
。 它不支援變數取代作業。 - 必須發佈參考的筆記本。 除非您選取用以啟用未發佈筆記本參考的選項,否則必須發佈筆記本加以參考。 Synapse Studio 無法辨識 Git 存放庫中未發佈的筆記本。
- 參考的筆記本不支援大於 5 的陳述式深度。
使用變數總管
Synapse 筆記本會以表格的形式提供內建變數總管,其中列出 PySpark (Python) 儲存格的目前 Spark 工作階段中的變數。 此資料表包含變數名稱、類型、長度和值的資料行。 隨著程式碼儲存格中定義變數,會自動出現更多變數。 選取每個資料行標頭會排序資料表中的變數。
若要開啟或隱藏變數總管,請選取筆記本命令列上的 [變數] 按鈕。
注意
變數總管僅支援 Python。
使用儲存格狀態指標
儲存格執行的逐步狀態會出現在儲存格下方,協助您查看其目前進度。 儲存格執行完成之後,總持續時間和結束時間的摘要隨即出現,並留在那裡供日後參考。
使用 Spark 進度指示器
Synapse 筆記本完全以 Spark 為基礎。 程式碼儲存格會在遠端的無伺服器 Apache Spark 集區上執行。 具有即時進度列的 Spark 作業進度指示器可協助您了解作業執行狀態。
每個作業或階段的工作數目可協助您識別 Spark 作業的平行層級。 您也可以藉由選取作業 (或階段) 名稱上的連結,更深入鑽研特定工作 (或階段) 的 Spark UI。
設定 Spark 工作階段
在 [設定工作階段] 窗格 (選取筆記本頂端的齒輪圖示即可找到) 上,您可以指定逾時持續時間、執行程式數目,以及要提供給目前 Spark 工作階段的執行程式大小。 重新啟動 Spark 工作階段,設定變更才會生效。 所有快取的筆記本變數都會清除。
您也可以從 Apache Spark 設定建立設定,或選取現有的設定。 如需詳細資訊,請參閱管理 Apache Spark 組態。
用於設定 Spark 工作階段的 Magic 命令
您也可以透過 magic 命令 %%configure
來指定 Spark 工作階段設定。 若要讓設定生效,請重新啟動 Spark 工作階段。
建議您在筆記本的開頭執行 %%configure
。 範例如下。 如需有效參數的完整清單,請參閱 GitHub 上的 Livy 資訊。
%%configure
{
//You can get a list of valid parameters to configure the session from https://github.com/cloudera/livy#request-body.
"driverMemory":"28g", // Recommended values: ["28g", "56g", "112g", "224g", "400g", "472g"]
"driverCores":4, // Recommended values: [4, 8, 16, 32, 64, 80]
"executorMemory":"28g",
"executorCores":4,
"jars":["abfs[s]://<file_system>@<account_name>.dfs.core.windows.net/<path>/myjar.jar","wasb[s]://<containername>@<accountname>.blob.core.windows.net/<path>/myjar1.jar"],
"conf":{
//Example of a standard Spark property. To find more available properties, go to https://spark.apache.org/docs/latest/configuration.html#application-properties.
"spark.driver.maxResultSize":"10g",
//Example of a customized property. You can specify the count of lines that Spark SQL returns by configuring "livy.rsc.sql.num-rows".
"livy.rsc.sql.num-rows":"3000"
}
}
以下是 %%configure
magic 命令的一些考量:
- 建議您在
%%configure
中針對driverMemory
和executorMemory
使用相同的值。 我們也建議driverCores
和executorCores
具有相同的值。 - 您可以在 Synapse 管線中使用
%%configure
,但如果未在第一個程式碼儲存格中進行設定,管線執行將會失敗,因為它無法重新啟動工作階段。 mssparkutils.notebook.run
中使用的%%configure
命令會被忽略,但%run <notebook>
中使用的命令會繼續執行。- 您必須在
"conf"
主體中使用標準 Spark 設定屬性。 我們不支援在第一層參考 Spark 設定屬性。 - 某些特殊 Spark 屬性不會在
"conf"
主體中生效,包括"spark.driver.cores"
、"spark.executor.cores"
、"spark.driver.memory"
、"spark.executor.memory"
和"spark.executor.instances"
。
來自管線的參數化工作階段設定
您可使用參數化工作階段組態,將 %%configure
magic 命令中的值取代為管線執行 (筆記本活動) 參數。 當您準備 %%configure
程式碼儲存格時,您可使用如下所示的物件來覆寫預設值:
{
"activityParameterName": "paramterNameInPipelineNotebookActivity",
"defaultValue": "defaultValueIfNoParamterFromPipelineNotebookActivity"
}
下列範例顯示 4
和 "2000"
的預設值,您也可設定這些預設值:
%%configure
{
"driverCores":
{
"activityParameterName": "driverCoresFromNotebookActivity",
"defaultValue": 4
},
"conf":
{
"livy.rsc.sql.num-rows":
{
"activityParameterName": "rows",
"defaultValue": "2000"
}
}
}
如果您直接在互動模式中執行筆記本,或管線筆記本活動未提供符合 "activityParameterName"
的參數,則筆記本會使用預設值。
在管線執行模式期間,您可使用 [設定] 索引標籤來設定管線筆記本活動的設定。
如果您想要變更工作階段設定,管線筆記本活動參數的名稱應該與筆記本中的 activityParameterName
相同。 在此範例中,在管線執行期間,8
會取代 %%configure
中的 driverCores
,而 4000
會取代 livy.rsc.sql.num-rows
。
如果管線在您使用 %%configure
magic 命令之後執行失敗,您可在筆記本的互動模式中執行 %%configure
magic 儲存格,以取得更多錯誤資訊。
將資料帶入筆記本
您可以從 Azure Data Lake Storage Gen 2、Azure Blob 儲存體和 SQL 集區載入資料,如下列程式碼範例所示。
從 Azure Data Lake Storage Gen2 讀取 CSV 檔案做為 Spark DataFrame
from pyspark.sql import SparkSession
from pyspark.sql.types import *
account_name = "Your account name"
container_name = "Your container name"
relative_path = "Your path"
adls_path = 'abfss://%s@%s.dfs.core.windows.net/%s' % (container_name, account_name, relative_path)
df1 = spark.read.option('header', 'true') \
.option('delimiter', ',') \
.csv(adls_path + '/Testfile.csv')
以 Spark 資料框架的形式從 Azure Blob 儲存體讀取 CSV 檔案
from pyspark.sql import SparkSession
# Azure storage access info
blob_account_name = 'Your account name' # replace with your blob name
blob_container_name = 'Your container name' # replace with your container name
blob_relative_path = 'Your path' # replace with your relative folder path
linked_service_name = 'Your linked service name' # replace with your linked service name
blob_sas_token = mssparkutils.credentials.getConnectionStringOrCreds(linked_service_name)
# Allow Spark to access from Azure Blob Storage remotely
wasb_path = 'wasbs://%s@%s.blob.core.windows.net/%s' % (blob_container_name, blob_account_name, blob_relative_path)
spark.conf.set('fs.azure.sas.%s.%s.blob.core.windows.net' % (blob_container_name, blob_account_name), blob_sas_token)
print('Remote blob path: ' + wasb_path)
df = spark.read.option("header", "true") \
.option("delimiter","|") \
.schema(schema) \
.csv(wasbs_path)
讀取主要儲存體帳戶中的資料
您可以直接存取主要儲存體帳戶中的資料。 不需要提供祕密金鑰。 在資料總管中,以滑鼠右鍵按一下檔案,然後選取 [新筆記本],以查看已自動產生資料擷取器的新筆記本。
使用 IPython 小工具
小工具是在瀏覽器中具有表示法與事件性質的 Python 物件,通常是像滑桿或文字方塊等控制項一樣。 IPython 小工具只能在 Python 環境中運作。 它們目前不提供其他語言支援 (例如 Scala、SQL 或 C#)。
使用 IPython 小工具的步驟
匯入
ipywidgets
模組以使用 Jupyter Widgets 架構:import ipywidgets as widgets
使用最上層
display
函式來呈現小工具,或在程式碼儲存格的最後一行保留widget
類型的運算式:slider = widgets.IntSlider() display(slider)
slider = widgets.IntSlider() slider
執行資料格。 小工具會出現在輸出區域。
您可以使用多個 display()
呼叫,讓同一個小工具執行個體多次呈現,但仍彼此保持同步:
slider = widgets.IntSlider()
display(slider)
display(slider)
若要呈現彼此獨立的兩個小工具,請建立兩個小工具執行個體:
slider1 = widgets.IntSlider()
slider2 = widgets.IntSlider()
display(slider1)
display(slider2)
支援的小工具
小工具類型 | Widget |
---|---|
數值 | IntSlider , FloatSlider , FloatLogSlider , IntRangeSlider , FloatRangeSlider , IntProgress , FloatProgress , BoundedIntText , BoundedFloatText , IntText , FloatText |
布林值 | ToggleButton 、Checkbox 、Valid |
選取項目 | Dropdown 、RadioButtons 、Select 、SelectionSlider 、SelectionRangeSlider 、ToggleButtons 、SelectMultiple |
String | Text , Text area , Combobox , Password , Label , HTML , HTML Math , Image , Button |
播放 (動畫) | Date picker 、Color picker 、Controller |
容器/版面配置 | Box 、HBox 、VBox 、GridBox 、Accordion 、Tabs 、Stacked |
已知的限制
下表列出目前不支援的小工具,以及因應措施:
功能 因應措施 Output
小工具您可改用 print()
函式將文字寫入stdout
。widgets.jslink()
您可以使用 widgets.link()
函式來連結兩個相似的小工具。FileUpload
小工具無法使用。 Azure Synapse Analytics 提供的全域
display
函式不支援在一次呼叫中顯示多個小工具 (也就是display(a, b)
)。 此行為與 IPythondisplay
函式不同。如果您關閉包含 IPython 小工具的筆記本,則除非再次執行對應的儲存格,否則您無法檢視小工具或與其互動。
儲存筆記本
您可以將單一筆記本或所有筆記本儲存在工作區:
若要儲存對單一筆記本所做的變更,請在筆記本命令列上選取 [發佈] 按鈕。
若要儲存工作區中的所有筆記本,請選取 [工作區] 命令列上的 [全部發佈] 按鈕。
在筆記本的 [屬性] 頁面上,您可設定是否要在儲存時包含儲存格輸出。
使用 magic 命令
您可以在 Synapse 筆記本中使用熟悉的 Jupyter magic 命令。 檢閱下列目前可用的 magic 命令清單。 在 GitHub 上提出您的使用案例,讓我們繼續建立更多 magic 命令來符合您的需求。
注意
Synapse 管線僅支援下列 magic 命令:%%pyspark
、%%spark
、%%csharp
、%%sql
。
適用於程式碼行的可用 magic 命令:
%lsmagic
、%time
、%timeit
、%history
、%run
、%load
適用於儲存格的可用 magic 命令:
%%time
, %%timeit
, %%capture
, %%writefile
, %%sql
, %%pyspark
, %%spark
, %%csharp
, %%html
, %%configure
參考未發佈的筆記本
當您想要在本機偵錯時,參考未發佈的筆記本很有用。 當您啟用此功能時,筆記本執行會擷取 Web 快取中的目前內容。 如果您執行包含參考筆記本語句的儲存格,則會參考目前筆記本瀏覽器中呈現的筆記本,而不是叢集中儲存的版本。 其他筆記本可以參考筆記本編輯器中的變更,而不需要您發佈 (即時模式) 或認可 (Git 模式) 變更。 藉由使用此方法,您可以在開發或偵錯程序期間防止常見程式庫的污染。
您可選取 [屬性] 窗格上的適當核取方塊,以啟用參考未發佈的筆記本。
下表比較不同案例。 雖然 %run 和 mssparkutils.notebook.run 在此有相同的行為,但資料表會使用 %run
作為範例。
大小寫 | 停用 | 啟用 |
---|---|---|
即時模式 | ||
Nb1 (已發佈)%run Nb1 |
執行 Nb1 的已發佈版本 | 執行 Nb1 的已發佈版本 |
Nb1 (新的)%run Nb1 |
錯誤 | 執行新的 Nb1 |
Nb1 (先前已發佈、已編輯)%run Nb1 |
執行 Nb1 的已發佈版本 | 執行 Nb1 的已編輯版本 |
Git 模式 | ||
Nb1 (已發佈)%run Nb1 |
執行 Nb1 的已發佈版本 | 執行 Nb1 的已發佈版本 |
Nb1 (新的)%run Nb1 |
錯誤 | 執行新的 Nb1 |
Nb1 (未發佈、已認可)%run Nb1 |
錯誤 | 執行已認可的 Nb1 |
Nb1 (先前已發佈、已認可)%run Nb1 |
執行 Nb1 的已發佈版本 | 執行 Nb1 的已認可版本 |
Nb1 (先前已發佈,最新分支中新的)%run Nb1 |
執行 Nb1 的已發佈版本 | 執行新的 Nb1 |
Nb1 (未發佈、先前已認可、已編輯)%run Nb1 |
錯誤 | 執行 Nb1 的已編輯版本 |
Nb1 (先前已發佈且認可、已編輯)%run Nb1 |
執行 Nb1 的已發佈版本 | 執行 Nb1 的已編輯版本 |
摘要中:
- 如果您停用參考未發佈的筆記本,請一律執行「已發佈」的版本。
- 如果您啟用參考未發佈的筆記本,參考執行一律會採用筆記本 UX 上出現的目前筆記本版本。
管理作用中工作階段
您可以重複使用筆記本工作階段,而不需要啟動新的工作階段。 在 Synapse 筆記本中,您可以在單一清單中管理作用中的工作階段。 若要開啟清單,請選擇省略符號 (...),然後選取 [管理工作階段]。
[作用中工作階段] 窗格會列出目前工作區中您從筆記本啟動的所有工作階段。 此清單會顯示工作階段資訊和對應的筆記本。 [與筆記本中斷連結]、[停止工作階段],以及 [在監視中檢視] 動作可在此使用。 此外,您可以將選取的筆記本連線至從另一個筆記本啟動的作用中工作階段。 然後工作階段會與上一個筆記本中斷連結 (如果它未閒置),並連結至目前的筆記本。
在筆記本中使用 Python 記錄
您可使用下列範例程式碼來尋找 Python 記錄,並設定不同的記錄層級和格式:
import logging
# Customize the logging format for all loggers
FORMAT = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
formatter = logging.Formatter(fmt=FORMAT)
for handler in logging.getLogger().handlers:
handler.setFormatter(formatter)
# Customize the log level for all loggers
logging.getLogger().setLevel(logging.INFO)
# Customize the log level for a specific logger
customizedLogger = logging.getLogger('customized')
customizedLogger.setLevel(logging.WARNING)
# Logger that uses the default global log level
defaultLogger = logging.getLogger('default')
defaultLogger.debug("default debug message")
defaultLogger.info("default info message")
defaultLogger.warning("default warning message")
defaultLogger.error("default error message")
defaultLogger.critical("default critical message")
# Logger that uses the customized log level
customizedLogger.debug("customized debug message")
customizedLogger.info("customized info message")
customizedLogger.warning("customized warning message")
customizedLogger.error("customized error message")
customizedLogger.critical("customized critical message")
檢視輸入命令的歷程記錄
Synapse 筆記本支援 magic 命令 %history
列印目前工作階段的輸入命令歷程記錄。 %history
magic 命令類似於標準 Jupyter IPython 命令,適用於筆記本中的多種語言內容。
%history [-n] [range [range ...]]
在上述程式碼中,-n
是列印執行編號。 range
值可以是:
N
:列印第Nth
個已執行儲存格的程式碼。M-N
:將程式碼從Mth
列印到第Nth
個執行的儲存格。
例如,若要將輸入歷程記錄從第一個列印到第二個執行的儲存格,請使用 %history -n 1-2
。
整合筆記本
將筆記本新增至管線
若要將筆記本新增至現有管線或建立新的管線,請選取右上角的 [新增至管線] 按鈕。
指定參數儲存格
若要將筆記本參數化,請選取省略符號 (...),以存取儲存格工具列上的更多命令。 然後選取 [切換參數儲存格],將儲存格指定為參數儲存格。
Azure Data Factory 會尋找參數儲存格,並將此儲存格視為執行時所傳遞參數的預設。 執行引擎會在參數儲存格下方加入新的儲存格,其中包含要覆寫預設值的輸入參數。
從管線指派參數值
使用參數建立筆記本之後,您可使用 Synapse 工作簿活動從管線執行它。 將活動新增至管線畫布之後,即可在 [設定] 索引標籤的 [基底參數] 區段中設定參數值。
使用快速鍵
與 Jupyter 筆記本類似,Synapse 筆記本也有強制回應使用者介面。 鍵盤會根據筆記本儲存格所在的模式來執行不同的動作。 Synapse 筆記本支援下列兩種模式的程式碼儲存格:
命令模式:沒有文字游標提示您輸入時,儲存格就會處於命令模式。 儲存格處於命令模式時,您可以將筆記本當做整體編輯,但無法輸入個別的儲存格。 選取 Esc 鍵或使用滑鼠在儲存格的編輯器區域外選取,以進入命令模式。
編輯模式:當儲存格處於編輯模式時,文字游標會提示您輸入儲存格。 選取 Enter 鍵或使用滑鼠選取儲存格的編輯器區域,以進入編輯模式。
命令模式中的快速鍵
動作 | Synapse 筆記本快速鍵 |
---|---|
執行目前的儲存格並在下方選取 | Shift+Enter |
執行目前的儲存格並在下方插入 | Alt+Enter |
執行目前的儲存格 | Ctrl+Enter |
選取上方儲存格 | Up |
選取下方儲存格 | 向下 |
選取上一個儲存格 | K |
選取下一個儲存格 | J |
在上方插入儲存格 | A |
在下方插入儲存格 | B |
刪除選取的儲存格 | Shift + D |
切換到編輯器模式 | Enter |
編輯模式中的快速鍵
動作 | Synapse 筆記本快速鍵 |
---|---|
向上移動資料指標 | Up |
向下移動資料指標 | 向下 |
復原 | Ctrl+Z |
取消復原 | Ctrl+Y |
註解/取消註解 | Ctrl+/ |
刪除此前的文字 | Ctrl+退格鍵 |
刪除此後的文字 | Ctrl+Delete |
移至儲存格開端 | Ctrl+Home |
移至儲存格末端 | Ctrl+End |
往左移一個單字 | Ctrl + 向左鍵 |
往右移一個單字 | Ctrl + 向右鍵 |
全選 | Ctrl+A |
Indent | Ctrl+] |
Dedent | Ctrl+[ |
切換到命令類型 | Esc |