Создание, разработка и обслуживание записных книжек Synapse в Azure Synapse Analytics

Записная книжка Synapse — это веб-интерфейс, позволяющий создавать файлы, содержащие рабочий код, визуализации и текст описания. Записные книжки отлично подходят для проверки идей и использования быстрых экспериментов, чтобы получить аналитические сведения по данным. Они также широко используются при подготовке и визуализации данных, машинном обучении и других сценариях с большими данными.

С помощью записной книжки Synapse можно выполнять следующие задачи.

  • Начните работу, потратив минимум усилий на настройку.
  • Обеспечьте безопасность данных благодаря встроенным функциям безопасности предприятия.
  • Анализируйте данные в необработанных форматах (CSV, txt, JSON и т. д.), обработанных форматах файлов (parquet, Delta Lake, ORC и т. д.) и файлах табличных данных SQL с использованием Spark и SQL.
  • Повысьте продуктивность труда с расширенными возможностями разработки и встроенной визуализацией данных.

В этой статье описывается использование записных книжек в Synapse Studio.

Создание записной книжки

Существует два способа создания записной книжки. Вы можете создать записную книжку или импортировать имеющуюся записную книжку в рабочую область Synapse из обозревателя объектов. Записные книжки Synapse распознают стандартные IPYNB-файлы Jupyter Notebook.

Снимок экрана: создание новой или импорт существующей записной книжки

Разработка записных книжек

Записные книжки состоят из ячеек, являющихся отдельными блоками кода или текста, которые можно запускать независимо или в группе.

Мы предоставляем широкие возможности для разработки записных книжек.

Примечание

В записных книжках автоматически создается sparkSession, хранящееся в переменной с именем spark. Кроме того, существует переменная для SparkContext, которая называется sc. Пользователи могут обращаться к этим переменным напрямую и не должны изменять их значения.

Добавление ячейки

Существует несколько способов добавить в записную книжку новую ячейку.

  1. Наведите указатель мыши между двумя ячейками и выберите Код или Markdown. Снимок экрана: кнопка add-azure-notebook-cell-with-cell

  2. Используйте сочетание клавиш aznb в режиме команд. Нажмите клавишу A, чтобы вставить ячейку над текущей ячейкой. Нажмите клавишу B, чтобы вставить ячейку под текущей ячейкой.


Установка основного языка

Записные книжки Synapse поддерживают четыре языка Apache Spark:

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

Установить основной язык для новых добавленных ячеек можно из раскрывающегося списка на верхней панели команд.

Снимок экрана default-synapse-language

Использование нескольких языков

В одной записной книжке можно использовать несколько языков, указав магическую языковую команду в начале ячейки. В следующей таблице перечислены магические команды, которые используются для переключения языков ячеек.

Магические команды Язык Описание
%%pyspark Python Выполните запрос Python к контексту Spark.
%%spark Scala Выполните запрос Scala к контексту Spark.
%%sql SparkSQL Выполните запрос SparkSQL к контексту Spark.
%%csharp .NET для Spark C# Выполните запрос .NET для Spark C# к контексту Spark.
%%sparkr R Выполнение запроса R к контексту Spark.

На следующем рисунке показан пример того, как можно написать запрос PySpark с помощью магической команды %%pyspark или запроса SparkSQL с магической командой %%sql в записной книжке Spark(Scala) . Обратите внимание, что основным языком для записной книжки является pySpark.

Снимок экрана магических команд Synapse Spark

Использование временных таблиц для ссылки на данные на разных языках

В записной книжке Synapse вы не можете ссылаться на данные или переменные напрямую на разных языках. В Spark на временную таблицу можно ссылаться на разных языках. Ниже приведен пример того, как прочитать Scala DataFrame в PySpark и SparkSQL, используя в качестве обходного решения временную таблицу Spark.

  1. В ячейке 1 выполните чтение DataFrame из соединителя пула SQL с помощью Scala и создайте временную таблицу.

    %%spark
    val scalaDataFrame = spark.read.sqlanalytics("mySQLPoolDatabase.dbo.mySQLPoolTable")
    scalaDataFrame.createOrReplaceTempView( "mydataframetable" )
    
  2. В ячейке 2 выполните запрос на данные с помощью SQL Spark.

    %%sql
    SELECT * FROM mydataframetable
    
  3. В ячейке 3 используйте данные в PySpark.

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

Функция IntelliSense в IDE

Записные книжки Synapse интегрированы с редактором Monaco, что позволяет работать с функцией IntelliSense в IDE в редакторе ячеек. Выделение синтаксиса, маркер ошибок и автоматическое завершение кода помогут быстрее написать код и определить проблемы.

Возможности IntelliSense находятся на разных уровнях зрелости для разных языков. В приведенной ниже таблице приведены сведения о поддерживаемых функциях.

Языки Выделение синтаксиса Маркер синтаксических ошибок Завершение кода синтаксиса Завершение кода переменной Завершение кода системной функции Завершение кода пользовательской функции Автоматический отступ Свертывание кода
PySpark (Python) Да Да Да Да Да Да Да Да
Spark (Scala) Да Да Да Да Да Да - Да
SparkSQL Да Да Да Да Да - - -
.NET для Spark C# Да Да Да Да Да Да Да Да

Примечание

Активный сеанс Spark необходим для использования завершения кода переменной, завершения кода системной функции, завершения кода пользовательской функции для .NET для Spark (C#).

Фрагменты кода

Записные книжки Synapse предоставляют фрагменты кода, которые упрощают ввод часто используемых шаблонов кода, таких как настройка сеанса Spark, чтение данных в виде Spark DataFrame или рисование диаграмм с помощью matplotlib и пр.

Фрагменты появляются в разделе Сочетания клавиш IntelliSense в стиле IDE вместе с другими предложениями. Содержимое фрагментов кода соответствует языку ячеек с кодом. Чтобы просмотреть доступные фрагменты кода, введите слово Snippet (фрагмент кода) или любое ключевое слово, указанное в заголовке фрагмента кода в редакторе ячеек с кодом. Например, при вводе слова read можно просмотреть список фрагментов кода для чтения данных из разных источников данных.

Анимированный GIF фрагментов кода Synapse

Форматирование текстовой ячейки с помощью кнопок панели инструментов

Для выполнения общих действий markdown можно использовать кнопки форматирования на панели инструментов текстовых ячеек. Они включают выделение текста полужирным шрифтом, выделение курсивом, абзацы или заголовки в виде раскрывающегося списка, вставку кода, вставку неупорядоченного списка, вставку упорядоченного списка, вставку гиперссылки, а также вставку изображения из URL.

Снимок экрана панели инструментов текстовой ячейки Synapse


Отменить или повторить операцию с ячейкой

Щелкните Отменить / Повторить или нажмите Z / Shift + Z, чтобы отменить самые последние операции с ячейками. Теперь вы можете отменить/повторить до 10 последних исторических операций с ячейками.

Скриншот ячеек отмены Synapse в aznb

Поддерживаемые операции с ячейками отмены

  • Вставка и удаление ячейки. Операции удаления можно отменить, нажав кнопку Отменить. Текстовое содержимое сохраняется вместе с ячейкой.
  • Реорганизовать ячейку.
  • Переключить параметр.
  • Выполнить преобразование между ячейкой кода и ячейкой Markdown.

Примечание

Операции с текстом внутри ячейки и операции комментирования ячеек кода нельзя отменить. Теперь вы можете отменить/повторить до 10 последних исторических операций с ячейками.


Комментирование ячейки кода

  1. Нажмите кнопку Комментарии на панели инструментов записной книжки, чтобы открыть панель Комментарии.

    Скриншот кнопки комментария Synapse

  2. Выберите код в ячейке кода, нажмите Создать на панели Комментарии, добавьте комментарии, затем нажмите кнопку Опубликовать комментарий, чтобы сохранить.

    Скриншот нового комментария Synapse

  3. Вы можете выполнить операции Редактировать комментарий, Разрешить ветку или Удалить ветку, нажав кнопку Еще рядом с вашим комментарием.

    Снимок экрана с комментарием редактирования Synapse


Перемещение ячейки

Щелкните левую часть ячейки и перетащите ее в нужное место. Анимированный GIF-файл перемещаемых ячеек Synapse


Удаление ячейки

Чтобы удалить ячейку, нажмите кнопку удаления в правой части ячейки.

Вы также можете использовать сочетания клавиш в режиме команд. Нажмите Shift+D, чтобы удалить текущую ячейку.

Снимок экрана azure-notebook-delete-a-cell


Сворачивание входных данных ячейки

Нажмите кнопку с многоточием (...) Другие команды на панели инструментов ячейки и Скрыть ввод, чтобы свернуть поле ввода для текущей ячейки. Чтобы развернуть его, выберите Показать ввод, когда ячейка свернута.

Анимированный GIF-файл azure-notebook-collapse-cell-input


Сворачивание выходных данных ячейки

Нажмите кнопку с многоточием (...) Другие команды на панели инструментов ячейки и Скрыть вывод, чтобы свернуть поле вывода для текущей ячейки. Чтобы развернуть его, нажмите Показать выво, когда поле вывода ячейки скрыто.

Анимированный GIF-файл azure-notebook-collapse-cell-output


Структура записной книжки

На боковой панели структуры (оглавления) для быстрой навигации представлен первый заголовок Markdown любой ячейки Markdown. Вы можете изменить размер боковой панели "Структура" или свернуть ее, чтобы выбрать подходящий вариант отображения. Можно нажать кнопку Структура на панели команд записной книжки, чтобы открыть или скрыть боковую панель

Снимок экрана azure-notebook-outline


Запуск записных книжек

Вы можете выполнять ячейки кода в записной книжке по отдельности или все сразу. Состояние и ход выполнения каждой ячейки представлены в записной книжке.

Выполнение ячейки

Есть несколько способов запустить код в ячейке.

  1. Наведите указатель мыши на необходимую ячейку и нажмите кнопку Выполнить ячейку или нажмите клавиши CTRL+ВВОД.

    Снимок экрана run-cell-1

  2. Используйте сочетания клавиш в режиме команд. Нажмите клавиши SHIFT+ВВОД, чтобы выполнить текущую ячейку и выбрать ячейку ниже. Нажмите клавиши ALT+ВВОД, чтобы выполнить текущую ячейку и вставить новую ячейку ниже.


Выполнение всех ячеек

Нажмите кнопку Выполнить все, чтобы последовательно выполнить все ячейки в текущей записной книжке.

Снимок экрана run-all-cells

Выполнение всех ячеек выше или ниже

Разверните раскрывающийся список с помощью кнопки Выполнить все, затем выберите Выполнить ячейки выше, чтобы последовательно выполнить все ячейки, расположенные выше текущей. Выберите Run cells below (Выполнить ячейки ниже), чтобы последовательно запустить все ячейки ниже текущей.

Снимок экрана azure-notebook-run-cells-above-or-below


Отмена выполнения всех ячеек

Нажмите кнопку Отменить все, чтобы отменить выполнение ячеек или ячеек, находящихся в очереди. Снимок экрана: azure-notebook-cancel-all-cells


Ссылка на записную книжку

Можно использовать магическую команду %run <notebook path> для перехода по ссылке к другой записной книжке в контексте текущей записной книжки. Все переменные, определенные в записной книжке, переход к которой выполняется по ссылке, доступны в текущей записной книжке. Магическая команда %run поддерживает вложенные вызовы, но не поддерживает рекурсивные вызовы. Исключение возникает, если глубина инструкции превышает пять.

Например, %run /<path>/Notebook1 { "parameterInt": 1, "parameterFloat": 2.5, "parameterBool": true, "parameterString": "abc" }.

Ссылка на записную книжку работает как в интерактивном режиме, так и в конвейере Synapse.

Примечание

  • Команда %run в настоящее время поддерживает передачу только абсолютного пути или имени записной книжки только в качестве параметра; относительный путь не поддерживается.
  • В настоящее время команда %run поддерживает только четыре типа значений параметров: int, float, bool, string; операция замены переменных не поддерживается.
  • Записные книжки, на которые имеются ссылки, должны быть опубликованы. Чтобы ссылаться на них, необходимо опубликовать записные книжки, если не включена ссылка на неопубликованную записную книжку. Synapse Studio не распознает неопубликованные записные книжки из репозитория Git.
  • Упомянутые записные книжки не поддерживают утверждение, что глубина больше пяти.

Обозреватель переменных

Записная книжка Synapse предоставляет встроенный обозреватель переменных, чтобы можно было видеть список имен переменных, типов, длин и значений в текущем сеансе Spark для ячеек PySpark (Python). Дополнительные переменные отображаются автоматически по мере их определения в ячейках кода. Щелкнув заголовок каждого столбца, можно сортировать переменные в таблице.

Можно нажать кнопку Переменные на панели команд записной книжки, чтобы открыть или скрыть обозреватель переменных.

Снимок экрана azure-notebook-variable-explorer

Примечание

Обозреватель переменных поддерживает только Python.


Индикатор состояния ячейки

Пошаговое состояние выполнения ячейки отображается под ячейкой, чтобы можно было просматривать ее текущий ход выполнения. После завершения выполнения ячейки отображается сводная информация об итогах выполнения с общей длительностью и временем окончания и сохраняется там для дальнейшего использования.

Снимок экрана cell-status

Индикатор хода выполнения Spark

Записная книжка Synapse основана исключительно на Spark. Ячейки с кодом выполняются в бессерверном пуле Apache Spark удаленно. Индикатор хода выполнения задания Spark снабжен индикатором хода выполнения в реальном времени, который поможет вам понять состояние хода выполнения задания. Количество задач для каждого задания или этапа помогает определить параллельный уровень задания Spark. Вы можете глубже изучить пользовательский интерфейс Spark по определенному заданию или этапу, перейдя по ссылке на его имени.

Снимок экрана spark-progress-indicator

Конфигурация сеанса Spark

Вы можете указать время ожидания, число и размер исполнителей, которые будут переданы текущему сеансу Spark в области Настройка сеанса. Перезапустите сеанс Spark, чтобы изменения конфигурации вступили в силу. Все кэшированные переменные записной книжки очищаются.

Вы также можете создать конфигурацию из конфигурации Apache Spark или выбрать существующую. Дополнительные сведения см. в разделе Управление конфигурацией Apache Spark.

Снимок экрана session-management

Магическая команда для настройки сеанса Spark

Также можно указать настройки сеанса Spark с помощью магической команды %% configure. Чтобы настройки вступили в силу, сеанс 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" 
    }
}

Примечание

  • Значения DriverMemory и ExecutorMemory рекомендуется установить одинаковыми в %%configure, так же как и driverCores и ExecutorCores.
  • Вы можете использовать команду %%configure в конвейерах Synapse, но если она не задана в первой ячейке кода, выполнение конвейера завершится ошибкой из-за невозможности перезапустить сеанс.
  • Команда %%configure, используемая в mssparkutils.notebook.run, будет проигнорирована, но используемая в %run записная книжка будет продолжать выполняться.
  • Стандартные свойства конфигурации Spark должны использоваться в тексте параметра conf. Ссылки первого уровня на свойства конфигурации Spark не поддерживаются.
  • Некоторые специальные свойства Spark, включая spark.driver.cores, spark.executor.cores, spark.driver.memory, spark.executor.memory, spark.executor.instances, не вступят в силу в теле conf.

Параметризованная конфигурация сеанса из конвейера

Параметризованная конфигурация сеанса позволяет вам заменить значение в магической команде %%configure параметрами выполнения конвейера (действие запуска записной книжки). При подготовке ячейки кода %%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 в записной книжке. При запуске этого конвейера в этом примере driverCores в %%configure будет заменен на 8, а livy.rsc.sql.num-rows будет заменен на 4000.

Примечание

Если запустить конвейер не удалось из-за использования новой магической команды %%configure, вы можете просмотреть дополнительную информацию об ошибке, запустив ячейку магической команды %%configure в интерактивном режиме записной книжки.

Перенесение данных в записную книжку

Вы можете загрузить данные из хранилища BLOB-объектов Azure, Azure Data Lake Store Gen 2 и пула SQL, как показано в приведенных ниже примерах кода.

Считывание CSV из Azure Data Lake Store Gen2 в качестве 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')

Считывание CSV из хранилища BLOB-объектов Azure в качестве Spark DataFrame


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)

Считывание данных из основной учетной записи хранения

Доступ к данным можно получить в основной учетной записи хранения напрямую. Нет необходимости предоставлять секретные ключи. В Data Explorer щелкните файл правой кнопкой мыши и выберите Создать записную книжку, чтобы просмотреть новую записную книжку с автоматически созданным средством извлечения данных.

Снимок экрана data-to-cell

Мини-приложения IPython

Мини-приложения — это объекты Python с большими событиями, которые имеют представление в браузере, часто в виде элемента управления, например ползунка, текстового поля и т. д. Мини-приложения IPython работают только в среде Python, но пока не поддерживаются на других языках (например, Scala, SQL, C#).

Использование мини-приложения IPython

  1. Сначала необходимо импортировать модуль ipywidgets для использования платформы мини-приложений Jupyter.

    import ipywidgets as widgets
    
  2. Можно использовать функцию верхнего уровня display для отрисовки мини-приложения или оставить выражение типа widget в последней строке ячейки кода.

    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
Мини-приложения воспроизведения (анимации) Date picker, Color picker, Controller
Мини-приложения контейнера или макета Box, HBox, VBox, GridBox, Accordion, Tabs, Stacked

Известные ограничения

  1. Следующие мини-приложения пока не поддерживаются; вы можете воспользоваться соответствующим обходным путем, как показано ниже.

    Функциональность Обходной путь
    Мини-приложение Output Вместо записи текста в stdout можно использовать функцию print().
    widgets.jslink() Для связывания двух одинаковых мини-приложений можно использовать функцию widgets.link().
    Мини-приложение FileUpload Пока не поддерживается.
  2. Глобальная display функция, предоставляемая Synapse, display(a, b)не поддерживает отображение нескольких мини-приложений в одном вызове (то есть ), который отличается от функции IPython display .

  3. Если вы закроете записную книжку, содержащую мини-приложение IPython, вы не сможете видеть его или взаимодействовать с ним, пока снова не выполните соответствующую ячейку.


Сохранение записных книжек

Вы можете сохранить одну или все записные книжки в рабочей области.

  1. Чтобы сохранить изменения, сделанные в одной записной книжке, нажмите кнопку Опубликовать на панели команд записной книжки.

    Снимок экрана publish-notebook

  2. Чтобы сохранить все записные книжки в рабочей области, нажмите кнопку Опубликовать все на панели команд рабочей области.

    Снимок экрана publish-all

В свойствах записной книжки вы можете указать, следует ли при сохранении включать выходные данные ячейки.

Снимок экрана notebook-properties

Магические команды

В записных книжках Synapse вы можете использовать привычные магические команды Jupyter. Доступные магические команды на текущий момент перечислены в ниже приведенном списке. Поделитесь с нами своими вариантами использования на GitHub, чтобы мы могли продолжать создавать другие магические команды с учетом потребностей пользователей.

Примечание

В конвейере Synapse поддерживаются только следующие магические команды: %%pyspark, %%spark, %%csharp, %%sql.

Доступные магические команды для строк: %lsmagic, %time, %timeit, %history, %run, %load

Доступные магические команды для ячеек: %%time, %%timeit, %%capture, %%writefile, %%sql, %%pyspark, %%spark, %%csharp, %%html, %%configure


Ссылка на неопубликованную записную книжку

Ссылка на неопубликованная записная книжка полезна, если требуется выполнить отладку "локально", при включении этой функции выполнение записной книжки получает текущее содержимое в веб-кэше. Если вы запускаете ячейку, включающую инструкцию записных книжек, вы ссылаетесь на записные книжки в текущем браузере записных книжек, а не на сохраненные версии в кластере. Это означает, что изменения в редакторе записных книжек могут быть немедленно ссылаться другими записными книжками без необходимости публикации (режим реального времени) или фиксации( Режим 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

Заключение

  • Если этот элемент отключен, всегда запускайте опубликованную версию.
  • Если этот элемент включен, приоритет будет следующим: измененная или новая >зафиксированная> опубликованная.

Управление активными сеансами

Теперь вы можете повторно использовать сеансы записной книжки, не запуская новые. Записная книжка Synapse теперь поддерживает управление активными сеансами в списке Управление сеансами, где показаны все сеансы в текущей рабочей области, запущенные вами из записной книжки.

Снимок экрана: notebook-manage-sessions

В списке Активные сеансы можно просмотреть сведения о сеансе и соответствующую записную книжку, которая в настоящее время присоединена к сеансу. Здесь вы можете отсоединить записную книжку, остановить сеанс и выполнить просмотр на странице мониторинга. Кроме того, вы можете легко подключить выбранную записную книжку к активному сеансу в списке, запущенном из другой записной книжки. Сеанс отсоединяется от предыдущей записной книжки (если она не простаит), а затем присоединяется к текущей.

Снимок экрана: список записных книжек

Ведение журнала Python в Notebook

Вы можете найти журналы 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-notebook-toggle-parameter


Фабрика данных Azure выполняет поиск ячейки параметров и обрабатывает содержимое этой ячейку как значения по умолчанию для параметров, переданных во время выполнения. Модуль выполнения добавляет новую ячейку под ячейкой параметров с входными параметрами, чтобы перезаписать значения по умолчанию.

Назначение значений параметров из конвейера

Создав записную книжку с параметрами, можно выполнить ее из конвейера с помощью действия с записной книжкой в Synapse. После добавления действия в конвейер можно задать значения параметров в разделе Базовые параметры на вкладке Параметры.

Снимок экрана Назначения параметра

При назначении значений параметров можно использовать язык выражений для конвейера или системные переменные.

Сочетания клавиш

Аналогично Jupyter Notebook, в записных книжках Synapse есть модальный пользовательский интерфейс. Клавиатура выполняет разные действия в зависимости от того, в каком режиме находится ячейка записной книжки. Записные книжки Synapse поддерживают для данной ячейки кода следующие два режима: режим команд и режим правки.

  1. Ячейка находится в режиме команд, когда нет текстового курсора для ввода текста. Когда ячейка находится в режиме команд, вы можете редактировать записную книжку целиком, но не вводить ее в отдельные ячейки. Войдите в режим команд, нажав ESC или щелкнув за пределами области редактора ячейки с помощью мыши.

    Снимок экрана command-mode

  2. Режим правки обозначается текстовым курсором для ввода текста в области редактора. Когда ячейка находится в режиме правки, вы можете ввести в нее текст. Войдите в режим правки, нажав Enter или щелкнув область редактора ячейки с помощью мыши.

    Снимок экрана edit-mode

Сочетания клавиш в режиме команд

Действие Сочетания клавиш для записной книжки Synapse
Запуск текущей ячейки и выбор ниже SHIFT+ВВОД
Запуск текущей ячейки и вставка ниже ALT+ВВОД
Выполнение текущей ячейки Ctrl+ВВОД
Выбор ячейки выше Вверх
Выбор ячейки ниже Вниз
Выбор предыдущей ячейки K
Выбор следующей ячейки J
Вставка ячейки выше Объект
Вставка ячейки ниже B
Удаление выбранных ячеек Shift+D
Переключение в режим правки Введите:

Сочетания клавиш в режиме правки

С помощью приведенных ниже сочетаний клавиш вы можете легче перемещаться и выполнять код в записных книжках Synapse в режиме правки.

Действие Сочетания клавиш для записной книжки Synapse
Перемещение курсора вверх Вверх
Перемещение курсора вниз Вниз
Отмена Ctrl+Z
Повторить CTRL+Y
Добавление и удаление комментариев Ctrl+/
Удаление слова перед Ctrl+Backspace
Удаление слова после Ctrl+Delete
Переход к началу ячейки Ctrl+Home
Передох к концу ячейки Ctrl+End
Переход на одно слово влево Ctrl+Left
Переход на одно слово вправо Ctrl+Right
Выбрать все Ctrl+A
Отступ Ctrl +]
Понижение уровня Ctrl+[
Переключение в режим команд ESC

Дальнейшие действия