Мини-приложения Databricks
Мини-приложения для ввода, позволяющие добавлять параметры в записные книжки и на панели мониторинга. Вы можете добавить мини-приложение из пользовательского интерфейса Databricks или с помощью API мини-приложения. Чтобы добавить или изменить мини-приложение, необходимо иметь разрешения CAN EDIT в записной книжке.
Если вы используете Databricks Runtime 11.3 LTS или более поздней версии, вы также можете использовать ipywidgets в записных книжках Databricks.
Мини-приложения Databricks лучше всего подходят для следующих целей:
- Создание записной книжки или панели мониторинга, которая выполняется повторно с разными параметрами.
- Быстро просматривайте результаты одного запроса с разными параметрами.
Чтобы просмотреть документацию по API мини-приложений в Scala, Python или R, используйте следующую команду: dbutils.widgets.help()
Типы мини-приложений Databricks
Есть четыре типа мини-приложений:
text
: ввод значения в текстовом поле.dropdown
: выбор значения из списка указанных значений.combobox
: сочетание текста и раскрывающегося списка. Выбор значения из предоставленного списка или его ввод в текстовом поле.multiselect
: выбор одного или нескольких значений из списка указанных значений.
Раскрывающиеся списки мини-приложений и текстовые поля отображаются сразу после панели инструментов записной книжки. Мини-приложения принимают только строковые значения.
Создание мини-приложения с помощью пользовательского интерфейса
Чтобы создать мини-приложение, нажмите кнопку "Изменить > мини-приложение". В диалоговом окне "Добавление мини-приложения" введите имя мини-приложения, необязательную метку, тип, тип параметра, возможные значения и необязательное значение по умолчанию. В диалоговом окне имя параметра — это имя, которое вы используете для ссылки на мини-приложение в коде. Метка мини-приложения — это необязательное имя, которое отображается над мини-приложением в пользовательском интерфейсе.
После создания мини-приложения вы можете навести указатель мыши на имя мини-приложения, чтобы отобразить подсказку, описывающую ссылку на мини-приложение.
Для редактирования или удаления мини-приложения можно использовать меню кебаб:
Использование мини-приложений Databricks в вычислительном кластере
В этом разделе описывается использование мини-приложений Databricks в записной книжке, подключенной к вычислительному кластеру. Сведения об использовании мини-приложений в записной книжке, подключенной к хранилищу SQL, см. в статье Об использовании мини-приложений Databricks в хранилище SQL.
API мини-приложения Databricks (кластер)
API мини-приложения предназначен для согласованности в Scala, Python и R. API мини-приложения в SQL немного отличается, но эквивалентен другим языкам. Вы управляете мини-приложениями с помощью эталонного интерфейса Databricks Utilities (dbutils).
- Первым аргументом для всех типов мини-приложений является
name
. Это имя, которое вы используете для доступа к мини-приложению. - Второй аргумент — это
defaultValue
параметр по умолчанию мини-приложения. - Третий аргумент — для всех типов мини-приложений, кроме того
text
, списокchoices
значений, которые может взять на себя мини-приложение. Этот аргумент не используется дляtext
мини-приложений типов. - Последним аргументом является необязательное значение метки, отображаемой в текстовом поле мини-приложения или раскрывающемся
label
списке.
Пример мини-приложения Databricks (кластер)
Чтобы просмотреть подробную документацию по API для каждого метода, воспользуйтесь dbutils.widgets.help("<method-name>")
. API справки идентичен на всех языках. Например:
dbutils.widgets.help("dropdown")
Создайте простое мини-приложение раскрывающегося списка.
Python
dbutils.widgets.dropdown("state", "CA", ["CA", "IL", "MI", "NY", "OR", "VA"])
SQL
CREATE WIDGET DROPDOWN state DEFAULT "CA" CHOICES SELECT * FROM (VALUES ("CA"), ("IL"), ("MI"), ("NY"), ("OR"), ("VA"))
Взаимодействуйте с мини-приложением с помощью панели мини-приложения.
Вы можете получить доступ к текущему значению мини-приложения, выполнив вызов:
Python
dbutils.widgets.get("state")
SQL
SELECT "${state}"
Наконец, вы можете удалить мини-приложение или все мини-приложения в записной книжке:
Python
dbutils.widgets.remove("state")
dbutils.widgets.removeAll()
SQL
REMOVE WIDGET state
При удалении мини-приложения нельзя создать мини-приложение в той же ячейке. Мини-приложение необходимо создать в другой ячейке.
Использование значений мини-приложений в Spark SQL (кластер)
Spark SQL обращается к значениям мини-приложения как к строковым литералам, которые можно использовать в запросах.
При интерактивном выполнении записных книжек из Spark SQL можно обращаться к мини-приложениям, определенным на любом языке. Рабочий процесс состоит из следующих шагов:
Создайте мини-приложение с раскрывающимся списком всех баз данных в текущем каталоге:
dbutils.widgets.dropdown("database", "default", [database[0] for database in spark.catalog.listDatabases()])
Создайте текстовое мини-приложение, чтобы вручную указать имя таблицы:
dbutils.widgets.text("table", "")
Выполните SQL-запрос для просмотра всех таблиц в базе данных (выбранной в раскрывающемся списке):
SHOW TABLES IN ${database}
Вручную введите имя таблицы в мини-приложении
table
.Просмотрите содержимое таблицы, не изменяя содержимое запроса:
SELECT * FROM ${database}.${table} LIMIT 100
Примечание.
Как правило, мини-приложения нельзя использовать для передачи аргументов между различными языками в записной книжке. Вы можете создать мини-приложение arg1
в ячейке Python и использовать его в ячейке SQL или Scala при одновременном запуске одной ячейки. Однако это не работает, если вы используете команду "Выполнить все" или запустить записную книжку в качестве задания.
Решения.
- Для записных книжек, не смешивающих языки, можно создать записную книжку для каждого языка и передать аргументы при запуске записной книжки.
- Вы можете получить доступ к мини-приложению
spark.sql()
с помощью вызова. Например, в Python:spark.sql("select getArgument('arg1')").take(1)[0][0]
- Вы можете получить доступ к мини-приложению
Примечание.
Экранировать символ $
в строковом литерале SQL можно с помощью \$
. Например, чтобы выразить строку $1,000
, используйте "\$1,000"
. Символ $
нельзя экранировать для идентификаторов SQL.
Использование мини-приложений Databricks в хранилище SQL
В этом разделе описывается использование мини-приложений Databricks в записной книжке, подключенной к хранилищу SQL. Сведения об использовании мини-приложений в записной книжке, подключенной к вычислительному кластеру, см. в разделе "Использование мини-приложений Databricks" в вычислительном кластере.
Чтобы ссылаться на значения мини-приложений в хранилище SQL, используйте синтаксис :param
, а не $param
. Например, если у вас есть мини-приложение с именем fare_amount, используйте следующий код:
SELECT * FROM samples.nyctaxi.trips WHERE fare_amount < :fare_amount
IDENTIFIER
Используйте ключевое слово для идентификации таких объектов, как таблицы, представления, схемы и столбцы. Например, если для мини-приложения с именем table_name задано samples.nyctaxi.trips
значение :
SELECT * FROM IDENTIFIER(:table_name)
Дополнительные сведения см. в предложении IDENTIFIER.
Дополнительные сведения о синтаксисе маркера параметра см. в разделе "Маркеры параметров".
Настройка параметров мини-приложения
Вы можете настраивать поведение мини-приложений при выборе нового значения, независимо от того, будет ли панель мини-приложения всегда закреплена в верхней части записной книжки, и изменять макет мини-приложений в записной книжке.
Щелкните значок в правом конце панели мини-приложения.
Во всплывающем диалоговом окне параметров на панели мини-приложения выберите поведение выполнения мини-приложения.
- Run Notebook (Запускать записную книжку). При каждом выборе нового значения вся записная книжка будет перезапускаться.
- Run Accessed Commands (Выполнять команды, к которым осуществлялся доступ). При каждом выборе нового значения будут перезапускаться только ячейки, которые получают значения для этого конкретного мини-приложения. Это параметр по умолчанию при создании мини-приложения. В этой конфигурации ячейки SQL не перезапускаются.
- Действие не требуется. При каждом выборе нового значения перезапуск не выполняется.
Чтобы закрепить мини-приложения в верхней части записной книжки или поместить мини-приложения над первой ячейкой, щелкните . Параметр сохраняется отдельно для каждого пользователя. Щелкните значок отпечатка еще раз, чтобы сбросить поведение по умолчанию.
Если у вас есть разрешение CAN MANAGE для записных книжек, можно настроить макет мини-приложения, щелкнув . Порядок и размер каждого мини-приложения можно настроить. Чтобы сохранить или закрыть изменения, нажмите кнопку .
Макет мини-приложения сохраняется вместе с записной книжкой. Если изменить макет мини-приложения из конфигурации по умолчанию, новые мини-приложения не добавляются в алфавитном порядке.
Чтобы сбросить макет мини-приложения в порядок и размер по умолчанию, щелкните, чтобы открыть диалоговое окно "Панель мини-приложений Параметры", а затем нажмите кнопку "Сбросить макет". Команда
removeAll()
не сбрасывает макет мини-приложения.
Пример записной книжки
В следующей записной книжке вы увидите демонстрацию работы параметра Run Accessed Commands (Выполнять команды, к которым осуществлялся доступ). Мини-приложение year
создается с параметром 2014
и используется в API кадров данных и командах SQL.
При изменении параметра мини-приложения year
на 2007
происходит повторная попытка выполнить команду кадра данных, но команда SQL не выполняется повторно.
Эта записная книжка иллюстрирует использование мини-приложений в записной книжке, подключенной к кластеру, а не в хранилище SQL.
Записная книжка с демонстрацией мини-приложения
Мини-приложения Databricks на панелях мониторинга
Если вы создаете панель мониторинга из записной книжки с мини-приложениями для ввода, все они отобразятся в верхней части панели мониторинга. В режиме презентации при каждом обновлении значения мини-приложения вы можете нажать кнопку Обновить, чтобы повторно запустить записную книжку и обновить панель мониторинга новыми значениями.
Использование мини-приложений Databricks с %run
Если вы запускаете записную книжку с мини-приложениями, она запускается с установленными для виджетов значениями по умолчанию.
Если записная книжка подключена к кластеру (т. е. не к хранилищу SQL), можно также передать значения в мини-приложения. Например:
%run /path/to/notebook $X="10" $Y="1"
В этом примере указанная записная книжка запускается и передает 10
в мини-приложение X и 1
в мини-приложение Y.
Ограничения
- Следующие ограничения применяются к мини-приложениям:
- В записной книжке можно создать не более 512 мини-приложений.
- Имя мини-приложения ограничено 1024 символами.
- Метка мини-приложения ограничена 2048 символами.
- Максимум 2048 символов можно ввести в текстовое мини-приложение.
- Для нескольких выборов, полей со списком или раскрывающегося списка может быть не более 1024.
- Существует известная проблема, из-за которой состояние мини-приложения может неправильно очиститься после нажатия клавиши Run All, даже после очистки или удаления мини-приложения в коде. Если это произойдет, вы увидите несоответствие между визуальным состоянием мини-приложения и его печатным состоянием. Повторное выполнение ячеек по отдельности может обойти эту проблему. Чтобы полностью избежать этой проблемы, Databricks рекомендует использовать ipywidgets.