在 Azure Synapse Analytics 中建立、開發及維護 Synapse 筆記本

Synapse 筆記本是 Web 介面,可讓您建立含有即時程式碼、視覺效果和敘述文字的檔案。 筆記本是驗證想法和使用快速實驗從您的資料取得見解的絕佳位置。 筆記本也廣泛用於資料準備、資料視覺效果、機器學習和其他巨量資料案例。

Synapse 筆記本的用途:

  • 無須設定即可開始使用。
  • 使用內建的企業安全性功能保護資料的安全。
  • 分析包括原始格式 (CSV、txt、JSON 等)、經處理的檔案格式 (parquet、Delta Lake、ORC 等),以及針對 Spark 和 SQL 的 SQL 表格式資料檔案等各種資料。
  • 透過增強的撰寫功能和內建的資料視覺效果,提高生產力。

本文說明如何在 Synapse Studio 中使用筆記本。

建立 Notebook

建立筆記本的方法有兩種。 您可以建立新的筆記本,也可以從物件總管將現有的筆記本匯入 Synapse 工作區。 Synapse 筆記本可辨識標準 Jupyter Notebook IPYNB 檔案。

建立新的筆記本或匯入筆記本的螢幕擷取畫面

開發筆記本

筆記本由儲存格組成,而儲存格是個別的程式碼或文字區塊,可獨立或成群執行。

我們提供豐富的作業來開發筆記本:

新增儲存格

有多種方式可將新的儲存格新增至您的筆記本。

  1. 將游標停留在兩個儲存格之間的空隙,然後選取 [程式碼] 或 [Markdown]。 使用儲存格按鈕新增 Azure 筆記本儲存格的螢幕擷取畫面

  2. 使用命令模式下的 aznb 快速鍵。 按下 [A],將儲存格插入目前的儲存格上方。 按下 [B],將儲存格插入目前的儲存格下方。


設定主要語言

Synapse 筆記本支援四種 Apache Spark 語言:

  • PySpark (Python)
  • Spark (Scala)
  • Spark SQL
  • .NET Spark (C#)
  • SparkR (R)

您可以從頂端命令列的下拉式清單中,為新加入的儲存格設定主要語言。

預設 Synapse 語言的螢幕擷取畫面

使用多種語言

您可以在儲存格的開頭指定正確的語言 magic 命令,以便在同個筆記本中使用多種語言。 下表列出用來切換儲存格語言的 magic 命令。

Magic 命令 Language 描述
%%pyspark Python 針對 Spark 內容執行 Python 查詢。
%%spark Scala 針對 Spark 內容執行 Scala 查詢。
%%sql SparkSQL 針對 Spark 內容執行 SparkSQL 查詢。
%%csharp 適用於 Spark C# 的 .NET 針對 Spark 內容執行適用於 Spark C# 的 .NET 查詢。
%%sparkr R 針對 Spark 內容執行 R 查詢。

下圖是如何使用 %%pyspark magic 命令,或在 Spark(Scala) 筆記本中使用 %%sql magic 命令的 SparkSQL 查詢,以便撰寫 PySpark 查詢的範例。 請注意,筆記本的主要語言會設定為 pySpark。

Synapse Spark magic 命令的螢幕擷取畫面

使用暫存資料表跨語言參考資料

在 Synapse 筆記本中,您無法在不同語言之間直接參考資料或變數。 在 Spark 中,可以跨語言參考暫存資料表。 以下範例說明如何使用 Spark 暫存資料表做為因應措施,讀取 PySparkSparkSQL 中的 Scala 資料框架。

  1. 在儲存格 1 中,使用 Scala 從 SQL 集區連接器讀取資料框架,並建立暫存資料表。

    %%spark
    val scalaDataFrame = spark.read.sqlanalytics("mySQLPoolDatabase.dbo.mySQLPoolTable")
    scalaDataFrame.createOrReplaceTempView( "mydataframetable" )
    
  2. 在儲存格 2 中,使用 Spark SQL 查詢資料。

    %%sql
    SELECT * FROM mydataframetable
    
  3. 在儲存格 3 中,使用 PySpark 中的資料。

    %%pyspark
    myNewPythonDataFrame = spark.sql("SELECT * FROM mydataframetable")
    

整合式開發環境 (IDE) 樣式的 IntelliSense

Synapse 筆記本與 Monaco 編輯器整合,將 IDE 樣式 IntelliSense 引進儲存格編輯器。 語法醒目提示、錯誤標記和自動程式碼完成,協助您更快撰寫程式碼和識別問題。

IntelliSense 功能在不同語言的成熟度層級不同。 使用下表來查看支援的功能。

Languages 語法醒目提示 語法錯誤標記 語法程式碼完成 變數程式碼完成 系統函數程式碼完成 使用者函式程式碼完成 智慧縮排 程式碼摺疊功能
PySpark (Python) Yes Yes Yes Yes Yes Yes
Spark (Scala) Yes Yes Yes Yes Yes -
SparkSQL Yes Yes Yes - - -
適用於 Spark (C#) 的 .NET Yes Yes Yes Yes Yes Yes Yes

注意

需要有使用中的 Spark 工作階段,才能利用 .NET for Spark (C#) 的變數程式碼完成、系統函式程式碼完成、使用者函式程式碼完成。

程式碼片段

Synapse 筆記本提供程式碼片段,可讓您更輕鬆輸入常用的程式碼模式,例如設定 Spark 工作階段、以 Spark 資料框架形式讀取資料,或使用 matplotlib 繪製圖表等。

程式碼片段出現在 IDE 樣式 IntelliSense 的快速鍵中,並混合其他建議。 程式碼片段內容配合程式碼儲存格語言。 輸入 Snippet 或任何關鍵字,就可以在程式碼儲存格編輯器的程式碼片段標題中看到可用的程式碼片段。 例如,輸入 read 可以看到用於從各種資料來源讀取資料的程式碼片段清單。

Synapse 程式碼片段的動畫 GIF

使用工具列按鈕格式化文字儲存格

您可以使用 [文字儲存格] 工具列中的 [格式] 按鈕來執行常見的 Markdown 動作。 其中包括粗體文字、斜體文字、段落/標題的下拉式清單、插入程式碼、插入未排序清單、插入已排序清單、插入超連結,以及從 URL 插入影像。

Synapse 文字儲存格工具列的螢幕擷取畫面


復原/重做儲存格作業

選取 [復原] / [重做] 按鈕或按下 Z / Shift+Z 可撤銷最近的儲存格作業。 您現在可以復原最近 10 個過往的儲存格動作。

Synapse aznb 復原儲存格的螢幕擷取畫面

支援的復原儲存格作業:

  • 插入/刪除儲存格:您可以選取 [復原] 來撤銷刪除作業,文字內容會與儲存格一起保存。
  • 重新排序儲存格。
  • 切換參數。
  • 在程式碼儲存格與 Markdown 儲存格之間轉換。

注意

儲存格內文字作業和程式碼儲存格註解作業無法復原。 您現在可以復原最近 10 個過往的儲存格動作。


程式碼儲存格註解

  1. 選取筆記本工具列上的 [註解] 按鈕,以開啟 [註解] 窗格。

    Synapse 註解按鈕的螢幕擷取畫面

  2. 在程式碼儲存格中選取程式碼,按一下 [註解] 窗格中的 [新增],然後按一下 [張貼註解] 按鈕來儲存。

    Synapse 新增註解的螢幕擷取畫面

  3. 您可以按一下註解旁邊的 [更多] 按鈕,以執行編輯註解解決對話刪除對話

    Synapse 編輯註解的螢幕擷取畫面


移動儲存格

按一下儲存格的左側,然後拖曳至所需的位置。 Synapse 移動儲存格的動畫 GIF


刪除儲存格

若要刪除儲存格,請選取資料格右側的刪除按鈕。

您也可以使用 命令模式下的快速鍵。 按下 Shift+D 可刪除目前的儲存格。

Azure 筆記本刪除儲存格的螢幕擷取畫面


摺疊儲存格輸入

在儲存格工具列上選取 [更多命令] 省略符號 (...),然後選取 [隱藏輸入],以摺疊目前儲存格的輸入。 若要展開,請在儲存格已摺疊時選取 [顯示輸入]。

Azure 筆記本摺疊儲存格輸入的動畫 GIF


摺疊儲存格輸出

選取儲存格工具列上的 [更多命令] 省略符號 (...),然後選取 [隱藏輸出],以摺疊目前儲存格的輸出。 若要展開,請在儲存格的輸出已隱藏時選取 [顯示輸出]。

Azure 筆記本摺疊儲存格輸出的動畫 GIF


筆記本大綱

[大綱] (目錄) 在側邊欄視窗中顯示任何 markdown 儲存格的第一個 markdown 標頭,以方便快速導覽。 [大綱] 側邊欄可調整大小也可摺疊,以最適合畫面大小。 您可以選取筆記本命令列上的 [大綱] 按鈕,以開啟或隱藏側邊欄

Azure 筆記本大綱的螢幕擷取畫面


執行筆記本

您可以個別或一次全部在您的筆記本中執行程式碼儲存格。 每個儲存格的狀態和進度都會在筆記本中表示。

執行儲存格

有數種方式可以在儲存格中執行程式碼。

  1. 將游標停留在您想要執行的儲存格上,然後選取 [執行儲存格] 按鈕,或按下 Ctrl+Enter

    執行儲存格 1 的螢幕擷取畫面

  2. 使用 命令模式下的快速鍵。 按下 Shift+Enter 以執行目前的儲存格,然後選取下方的儲存格。 按下 Alt+Enter 以執行目前的儲存格,並在下方插入新的儲存格。


執行所有儲存格

選取 [全部執行] 按鈕,依序執行目前筆記本中的所有儲存格。

執行所有儲存格的螢幕擷取畫面

執行上方或下方所有儲存格

展開 [全部執行] 按鈕的下拉式清單,然後選取 [執行上方的儲存格],以依序執行目前儲存格上方的所有儲存格。 選取 [執行下方的儲存格],依序執行目前儲存格下方的所有儲存格。

Azure 筆記本執行上方或下方儲存格的螢幕擷取畫面


取消所有執行中的儲存格

選取 [全部取消] 按鈕,以取消執行中的儲存格或在佇列中等待的儲存格。 Azure 筆記本取消所有儲存格的螢幕擷取畫面


筆記本參考

在目前筆記本的範圍內,您可以使用 %run <notebook path> magic 命令來參考另一個筆記本。 參考筆記本中定義的所有變數都可以在目前的筆記本中使用。 %run magic 命令支援巢狀呼叫,但不支援遞迴呼叫。 如果陳述式深度大於,您會收到例外狀況。

範例: %run /<path>/Notebook1 { "parameterInt": 1, "parameterFloat": 2.5, "parameterBool": true, "parameterString": "abc" }.

筆記本參考在互動模式和 Synapse 管線中都有作用。

注意

  • %run 命令目前僅支援以參數傳遞絕對路徑或筆記本名稱,不支援相對路徑。
  • %run 命令目前最多僅支援 4 個參數值型別:intfloatboolstring,不支援變數取代作業。
  • 需要發佈參考的筆記本。 您必須發佈筆記本才能予以參考,除非已啟用參考未發佈的筆記本。 Synapse Studio 無法辨識 Git 存放庫中未發佈的筆記本。
  • 參考的筆記本不支援深度大於的陳述式。

變數總管

Synapse 筆記本提供內建變數總管,讓您在目前的 Spark 工作階段中,查看 PySpark (Python) 儲存格的變數名稱、型別、長度和值的清單。 隨著程式碼儲存格中定義變數,將會自動出現越多變數。 按一下每個資料行標頭會排序資料表中的變數。

您可以選取筆記本命令列上的 [變數] 按鈕,以開啟或隱藏變數總管。

Azure 筆記本變數總管的螢幕擷取畫面

注意

變數瀏覽器僅支援 Python。


儲存格狀態指標

儲存格下方會逐步顯示儲存格執行狀態,以協助您檢視目前的進度。 儲存格執行完成之後,會顯示包含總持續時間和結束時間的執行摘要,並保留在該處供日後參考。

儲存格狀態的螢幕擷取畫面

Spark 進度指示器

Synapse 筆記本完全以 Spark 為基礎。 程式碼儲存格在遠端的無伺服器 Apache Spark 集區上執行。 系統隨即會提供具有即時進度列的 Spark 作業進度列指示器,以協助您瞭解作業執行狀態。 每個作業或階段的工作數目可協助您找出 Spark 作業的平行層級。 您也可以透過選取作業 (或階段) 名稱上的連結,更深入鑽研特定工作 (或階段) 的 Spark UI。

Spark 進度列指示器的螢幕擷取畫面

Spark 工作階段設定

您可以在 [設定工作階段] 中指定要提供給目前 Spark 工作階段的執行程式逾時時間、數目和大小。 重新啟動 Spark 工作階段,設定變更才會生效。 所有快取的筆記本變數都會清除。

您也可以從 Apache Spark 設定建立設定,或選取現有的設定。 如需詳細資料,請參閱 Apache Spark 設定管理

工作階段管理的螢幕擷取畫面

Spark 工作階段設定 magic 命令

您也可以透過 magic 命令 %% configure 來指定 Spark 工作階段設定。 Spark 工作階段需要重新啟動,設定才會生效。 建議您在筆記本開頭執行 %%configure。 以下是範例,如需完整的有效參數清單,請參閱 https://github.com/cloudera/livy#request-body

%%configure
{
    //You can get a list of valid parameters to config 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 standard spark property, to find more available properties please visit:https://spark.apache.org/docs/latest/configuration.html#application-properties.
        "spark.driver.maxResultSize":"10g",
    //Example of customized property, you can specify count of lines that Spark SQL returns by configuring "livy.rsc.sql.num-rows".
        "livy.rsc.sql.num-rows":"3000" 
    }
}

注意

  • 在 %%configure 中,建議將 "DriverMemory" 和 "ExecutorMemory" 設定為相同的值,"driverCores" 和 "executorCores" 也一樣。
  • 您可以在 Synapse 管線中使用 %%configure,但如果未在第一個程式碼儲存格中設定,則管線執行將會因為無法重新啟動工作階段而失敗。
  • mssparkutils.notebook.run 中使用的 %%configure 會被忽略,但 %run notebook 中使用的 %%configure 則會繼續執行。
  • 必須在 "conf" 主體中使用標準 Spark 設定屬性。 我們不支援在第一層參考 Spark 設定屬性。
  • 某些特殊的 Spark 屬性 (包括 "spark.driver.cores"、"spark.executor.cores"、"spark.driver.memory"、"spark.executor.memory"、"spark.executor.instances") 不會在 "conf" 主體中生效。

來自管線的參數化工作階段設定

參數化工作階段設定可讓您將 %%configure magic 中的值以管線執行 (筆記本活動) 參數取代。 準備 %%configure 程式碼儲存格時,您可以使用類似如下的物件來覆寫預設值 (下列範例中的 4 和 "2000" 也可設定):

{
      "activityParameterName": "paramterNameInPipelineNotebookActivity",
      "defaultValue": "defaultValueIfNoParamterFromPipelineNotebookActivity"
} 
%%configure  

{ 
    "driverCores": 
    { 
        "activityParameterName": "driverCoresFromNotebookActivity", 
        "defaultValue": 4 
    }, 
    "conf": 
    { 
        "livy.rsc.sql.num-rows": 
        { 
            "activityParameterName": "rows", 
            "defaultValue": "2000" 
        } 
    } 
} 

如果直接在互動模式中執行筆記本,或沒有任何參數符合從管線筆記本活動提供的 "activityParameterName",則筆記本將會使用預設值。

在管線執行模式期間,您可以設定管線筆記本活動設定如下:參數化工作階段設定的螢幕擷取畫面

如果您想要變更工作階段設定,管線筆記本活動參數名稱應該與筆記本中的 activityParameterName 相同。 執行此管線時,在此範例中,%%configure 中的 driverCores 會以 8 取代,而 livy.rsc.sql.num-rows 會以 4000 取代。

注意

如果執行管線因為使用此新的 %%configure magic 而失敗,您可以在筆記本的互動模式中執行 %%configure magic 儲存格,來查看更多錯誤資訊。

將資料帶入筆記本

您可以從 Azure Blob 儲存體、Azure Data Lake Store Gen 2 和 SQL 集區載入資料,如下列程式碼範例所示。

從 Azure Data Lake Store Gen2 讀取 CSV 做為 Spark 資料框架

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 Blob 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 小工具

  1. 您必須先匯入 ipywidgets 模組,才能使用 Jupyter 小工具架構。

    import ipywidgets as widgets
    
  2. 您可以使用最上層 display 函式來呈現小工具,或在程式碼儲存格的最後一行保留小工具類型的運算式。

    slider = widgets.IntSlider()
    display(slider)
    
    slider = widgets.IntSlider()
    slider
    
  3. 執行儲存格,小工具會出現在輸出區域。

    IPython 小工具滑桿的螢幕擷取畫面

  4. 您可以使用多個 display() 呼叫,讓同一個小工具執行個體多次呈現,但仍彼此保持同步。

    slider = widgets.IntSlider()
    display(slider)
    display(slider)
    

    IPython 小工具滑桿的螢幕擷取畫面

  5. 若要呈現彼此獨立的兩個小工具,請建立兩個小工具執行個體:

    slider1 = widgets.IntSlider()
    slider2 = widgets.IntSlider()
    display(slider1)
    display(slider2)
    

支援的小工具

小工具類型 小工具
數值小工具 IntSlider、FloatSlider、FloatLogSlider、IntRangeSlider、FloatRangeSlider、IntProgress、FloatProgress、BoundedIntText、BoundedFloatText、IntText、FloatText
布林值小工具 ToggleButton、Checkbox、Valid
選取項目小工具 Dropdown、RadioButtons、Select、SelectionSlider、SelectionRangeSlider、ToggleButtons、SelectMultiple
字串小工具 Text、Text area、Combobox、Password、Label、HTML、HTML Math、Image、Button
播放 (動畫) 小工具 日期選擇器、色彩選擇器、控制器
容器/版面配置小工具 Box、HBox、VBox、GridBox、Accordion、Tabs、Stacked

已知的限制

  1. 尚不支援下列小工具,您可以採取如下對應的解決方法:

    功能 因應措施
    Output 小工具 您可以改用 print() 函式將文字寫入 stdout。
    widgets.jslink() 您可以使用 widgets.link() 函式來連結兩個相似的小工具。
    FileUpload 小工具 尚不支援。
  2. Synapse 提供的 display 全域函式不支援在 1 個呼叫 (例如 display(a, b)) 中顯示多個小工具,這與 IPython display 函式不同。

  3. 如果您關閉包含 IPython 小工具的筆記本,除非再次執行對應的儲存格,否則無法看到小工具或與之互動。


儲存筆記本

您可以將單一筆記本或所有筆記本儲存在工作區中。

  1. 若要儲存對單一筆記本所做的變更,請在筆記本命令列上選取 [發佈] 按鈕。

    發佈筆記本的螢幕擷取畫面

  2. 若要儲存工作區中的所有筆記本,請選取 [工作區] 命令列上的 [全部發佈] 按鈕。

    全部發佈的螢幕擷取畫面

在筆記本屬性中,您可以設定是否要在儲存時包含儲存格輸出。

筆記本屬性的螢幕擷取畫面

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 模式)。利用此方法,您就可以輕鬆地避免通用程式庫在開發或偵錯過程中遭到污染。

您可以從 [屬性] 面板啟用參考未發佈的筆記本:

筆記本參考的螢幕擷取畫面

如需不同的案例比較,請查看下表:

請注意,%runmssparkutils.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 的已編輯版本

結論

  • 如果停用,請一律執行已發佈版本。
  • 如果啟用,優先順序為:已編輯 / 新的 > 已認可 > 已發佈。

使用中工作階段管理

您現在可以方便地重複使用筆記本工作階段,而不需要啟動新的工作階段。 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 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 use 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 use 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")

整合筆記本

將筆記本新增至管線

選取右上角的 [新增至管線] 按鈕,將筆記本新增至現有的管線或建立新的管線。

將筆記本新增至管線的螢幕擷取畫面

指定參數儲存格

若要將筆記本參數化,請選取省略符號 (...),以存取儲存格工具列上的更多命令。 然後選取 [切換參數儲存格],將儲存格指定為參數儲存格。

Azure 筆記本切換參數的螢幕擷取畫面


Azure Data Factory 會尋找參數儲存格,並將此儲存格視為執行時所傳遞參數的預設。 執行引擎會在參數資料格下方新增資料格,且帶有輸入參數來覆寫預設值。

從管線指派參數值

建立具有參數的筆記本之後,即可從管線中透過 Synapse 筆記本活動來執行。 將活動新增至管線畫布之後,即可在 [設定] 索引標籤的 [基底參數] 區段下設定參數值。

指派參數的螢幕擷取畫面

指派參數值時,您可以使用管線運算式語言系統變數

快速鍵

與 Jupyter 筆記本類似,Synapse 筆記本也有強制回應使用者介面。 鍵盤會根據筆記本儲存格所在的模式來執行不同的動作。 Synapse 筆記本在任一程式碼儲存格中支援下列兩種模式:命令模式和編輯模式。

  1. 沒有文字游標提示您輸入時,儲存格就會處於命令模式。 儲存格處於命令模式時,您可以將筆記本當做整體編輯,但無法輸入個別的儲存格。 按下 ESC 或在儲存格的編輯器區域外按一下滑鼠,可進入命令模式。

    命令模式的螢幕擷取畫面

  2. 編輯模式會以文字游標指示,提示您在編輯器區域中輸入。 當儲存格處於編輯模式時,您可以在儲存格中輸入文字。 按下 Enter 或在儲存格的編輯器區域上按一下滑鼠,可進入編輯模式。

    編輯模式的螢幕擷取畫面

命令模式下的快速鍵

動作 Synapse 筆記本快速鍵
執行目前的儲存格並在下方選取 Shift+Enter
執行目前的儲存格並在下方插入 Alt+Enter
執行目前的儲存格 Ctrl+Enter
選取上方儲存格 上移
選取下方儲存格 向下
選取上一個儲存格 K
選取下一個儲存格 J
在上方插入儲存格 A
在下方插入儲存格 B
刪除選取的儲存格 Shift+D
切換至編輯模式 Enter

編輯模式下的快速鍵

在編輯模式下,您可以使用下列按鍵快速鍵,在 Synapse 筆記本中更輕鬆瀏覽和執行程式碼。

動作 Synapse 筆記本快速鍵
向上移動資料指標 上移
向下移動資料指標 向下
復原 Ctrl + Z
取消復原 Ctrl + Y
註解/取消註解 Ctrl + /
刪除此前的文字 Ctrl + 退格鍵
刪除此後的文字 Ctrl + Delete
移至儲存格開端 Ctrl + Home
移至儲存格末端 Ctrl + End
往左移一個單字 Ctrl + 向左鍵
往右移一個單字 Ctrl + 向右鍵
全選 Ctrl + A
縮排 Ctrl + ]
Dedent Ctrl + [
切換到命令類型 Esc

後續步驟