Udostępnij za pośrednictwem


Widżety usługi Databricks

Widżety wejściowe umożliwiają dodawanie parametrów do notesów i pulpitów nawigacyjnych. Widżet można dodać z interfejsu użytkownika usługi Databricks lub przy użyciu interfejsu API widżetu. Aby dodać lub edytować widżet, musisz mieć uprawnienia CAN EDIT w notesie.

Jeśli używasz środowiska Databricks Runtime 11.3 LTS lub nowszego, możesz również użyć poleceń ipywidgets w notesach usługi Databricks.

Widżety usługi Databricks są najlepsze dla:

  • Tworzenie notesu lub pulpitu nawigacyjnego, który jest ponownie wykonywany przy użyciu różnych parametrów.
  • Szybkie eksplorowanie wyników pojedynczego zapytania z różnymi parametrami.

Aby wyświetlić dokumentację interfejsu API widżetu w języku Scala, Python lub R, użyj następującego polecenia: dbutils.widgets.help()

Typy widżetów usługi Databricks

Istnieją 4 typy widżetów:

  • text: Wprowadź wartość w polu tekstowym.
  • dropdown: Wybierz wartość z listy podanych wartości.
  • combobox: kombinacja tekstu i listy rozwijanej. Wybierz wartość z podanej listy lub wprowadź wartość w polu tekstowym.
  • multiselect: Wybierz co najmniej jedną wartość z listy podanych wartości.

Listy rozwijane widżetu i pola tekstowe są wyświetlane natychmiast po pasku narzędzi notesu. Widżety akceptują tylko wartości ciągu.

Widżet w nagłówku

Tworzenie widgetów

W tej sekcji pokazano, jak tworzyć widżety przy użyciu interfejsu użytkownika lub programowo przy użyciu magii SQL lub interfejsu API widżetu dla języków Python, Scala i R.

Tworzenie widżetów przy użyciu interfejsu użytkownika

Tworzenie widżetu przy użyciu interfejsu użytkownika notesu. Jeśli masz połączenie z usługą SQL Warehouse, jest to jedyny sposób tworzenia widżetów.

Wybierz pozycję Edytuj > widżet Dodaj. W oknie dialogowym Dodawanie widżetu wprowadź nazwę widżetu, opcjonalną etykietę, typ, typ parametru, możliwe wartości i opcjonalną wartość domyślną. W oknie dialogowym Nazwa parametru jest nazwą używaną do odwołowania się do widżetu w kodzie. Etykieta widżetu to opcjonalna nazwa wyświetlana nad widżetem w interfejsie użytkownika.

Okno dialogowe tworzenia widżetu

Po utworzeniu widżetu możesz umieścić wskaźnik myszy na nazwie widżetu, aby wyświetlić etykietkę narzędzia opisjącą sposób odwołowania się do widżetu.

etykietka narzędzia widżetu

Możesz użyć menu kebab, aby edytować lub usunąć widżet:

menu kebab widżetu

Tworzenie widżetów przy użyciu języków SQL, Python, R i Scala

Programowe tworzenie widżetów w notesie dołączonym do klastra obliczeniowego.

Interfejs API widżetu został zaprojektowany tak, aby był spójny w języku Scala, Python i R. Interfejs API widżetu w języku SQL jest nieco inny, ale równoważny z innymi językami. Widżety można zarządzać za pomocą interfejsu referencyjnego narzędzia usługi Databricks (dbutils).

  • Pierwszym argumentem dla wszystkich typów widżetów jest name. Jest to nazwa używana do uzyskiwania dostępu do widżetu.
  • Drugi argument to defaultValue, domyślne ustawienie widżetu.
  • Trzecim argumentem dla wszystkich typów widżetów (z wyjątkiem text) jest choiceslista wartości, które może przyjąć widżet. Ten argument nie jest używany dla text widżetów typu.
  • Ostatnim argumentem jest label, opcjonalna wartość etykiety wyświetlanej w polu tekstowym widżetu lub liście rozwijanej.

Python

dbutils.widgets.dropdown("state", "CA", ["CA", "IL", "MI", "NY", "OR", "VA"])

Scala

dbutils.widgets.dropdown("state", "CA", ["CA", "IL", "MI", "NY", "OR", "VA"])

R

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"))

Interakcja z widżetem z panelu widżetu.

Interakcja z widżetem

Możesz uzyskać dostęp do bieżącej wartości widżetu lub uzyskać mapowanie wszystkich widżetów:

Python

dbutils.widgets.get("state")

dbutils.widgets.getAll()

Scala

dbutils.widgets.get("state")

dbutils.widgets.getAll()

R

dbutils.widgets.get("state")

SQL

SELECT :state

Na koniec możesz usunąć widżet lub wszystkie widżety w notesie:

Python

dbutils.widgets.remove("state")

dbutils.widgets.removeAll()

Scala

dbutils.widgets.remove("state")

dbutils.widgets.removeAll()

R

dbutils.widgets.remove("state")

dbutils.widgets.removeAll()

SQL

REMOVE WIDGET state

Jeśli usuniesz widżet, nie możesz go utworzyć w tej samej komórce. Widżet należy utworzyć w innej komórce.

Używanie wartości widżetów w usługach Spark SQL i SQL Warehouse

Wartości widżetów dostępu do usług Spark SQL i SQL Warehouse przy użyciu znaczników parametrów. Znaczniki parametrów chronią kod przed atakami polegającymi na wstrzyknięciu kodu SQL przez wyraźne oddzielenie podanych wartości od instrukcji SQL.

Znaczniki parametrów dla widżetów są dostępne w środowisku Databricks Runtime 15.2 lub nowszym. Poprzednie wersje środowiska Databricks Runtime powinny używać starej składni dla DBR 15.1 i nowszych.

Możesz uzyskiwać dostęp do widżetów zdefiniowanych w dowolnym języku z usługi Spark SQL podczas interaktywnego wykonywania notesów. Rozważmy następujący przepływ pracy:

  1. Utwórz widżet listy rozwijanej wszystkich baz danych w bieżącym wykazie:

    dbutils.widgets.dropdown("database", "default", [database[0] for database in spark.catalog.listDatabases()])
    
  2. Utwórz widżet tekstowy, aby ręcznie określić nazwę tabeli:

    dbutils.widgets.text("table", "")
    
  3. Uruchom zapytanie SQL, aby wyświetlić wszystkie tabele w bazie danych (wybrane z listy rozwijanej):

    SHOW TABLES IN IDENTIFIER(:database)
    

    Uwaga

    Należy użyć klauzuli SQL IDENTIFIER() , aby przeanalizować ciągi jako identyfikatory obiektów, takie jak nazwy baz danych, tabel, widoków, funkcji, kolumn i pól.

  4. Ręcznie wprowadź nazwę tabeli w widżecie table .

  5. Utwórz widżet tekstowy, aby określić wartość filtru:

    dbutils.widgets.text("filter_value", "")
    
  6. Wyświetl podgląd zawartości tabeli bez konieczności edytowania zawartości zapytania:

    SELECT *
    FROM IDENTIFIER(:database || '.' || :table)
    WHERE col == :filter_value
    LIMIT 100
    

Użyj wartości widżetów w środowisku Databricks Runtime 15.1 lub nowszym

W tej sekcji opisano sposób przekazywania wartości widżetów usługi Databricks do %sql komórek notesu w środowisku Databricks Runtime 15.1 lub nowszym.

  1. Tworzenie widżetów w celu określenia wartości tekstowych.

Python

 dbutils.widgets.text("database", "")
 dbutils.widgets.text("table", "")
 dbutils.widgets.text("filter_value", "100")

Scala

 dbutils.widgets.text("database", "")
 dbutils.widgets.text("table", "")
 dbutils.widgets.text("filter_value", "100")

R

 dbutils.widgets.text("database", "")
 dbutils.widgets.text("table", "")
 dbutils.widgets.text("filter_value", "100")

SQL

 CREATE WIDGET TEXT database DEFAULT ""
 CREATE WIDGET TEXT table DEFAULT ""
 CREATE WIDGET TEXT filter_value DEFAULT "100"
  1. Przekaż wartości widżetu ${param} przy użyciu składni .

    SELECT *
    FROM ${database}.${table}
    WHERE col == ${filter_value}
    LIMIT 100
    

Uwaga

Aby uciec od $ znaku literału ciągu SQL, użyj polecenia \$. Aby na przykład wyrazić ciąg $1,000, użyj polecenia "\$1,000". Nie $ można uniknić znaku dla identyfikatorów SQL.

Konfigurowanie ustawień widżetu

Zachowanie widżetów można skonfigurować po wybraniu nowej wartości, niezależnie od tego, czy panel widżetu jest zawsze przypięty do góry notesu, i zmieniać układ widżetów w notesie.

  1. Kliknij ikonę ikona koła zębatego na prawym końcu panelu Widżet.

  2. W wyskakującym oknie dialogowym Ustawienia panelu widżetu wybierz zachowanie wykonywania widżetu.

    Ustawienia widżetu

    • Uruchom notes: za każdym razem, gdy jest zaznaczona nowa wartość, cały notes jest uruchamiany ponownie.
    • Uruchom polecenia z dostępem: za każdym razem, gdy jest zaznaczona nowa wartość, uruchamiane są tylko komórki pobierające wartości dla tego konkretnego widżetu. Jest to ustawienie domyślne podczas tworzenia widżetu. Komórki SQL nie są uruchamiane ponownie w tej konfiguracji.
    • Nic nie robi: za każdym razem, gdy jest zaznaczona nowa wartość, nic nie jest uruchamiane ponownie.
  3. Aby przypiąć widżety do góry notesu lub umieścić widżety nad pierwszą komórką, kliknij przycisk ikona pinezki. Ustawienie jest zapisywane dla poszczególnych użytkowników. Kliknij ponownie ikonę kciuka, aby zresetować domyślne zachowanie.

  4. Jeśli masz uprawnienie CAN MANAGE dla notesów, możesz skonfigurować układ widżetu, klikając ikona edycjipozycję . Kolejność i rozmiar każdego widżetu można dostosować. Aby zapisać lub odrzucić zmiany, kliknij pozycję zaakceptuj i anuluj ikony.

    Układ widżetu jest zapisywany za pomocą notesu. Jeśli zmienisz układ widżetu z konfiguracji domyślnej, nowe widżety nie zostaną dodane alfabetycznie.

  5. Aby zresetować układ widżetu do domyślnej kolejności i rozmiaru, kliknij ikona koła zębatego , aby otworzyć okno dialogowe Ustawienia panelu widżetów, a następnie kliknij przycisk Resetuj układ. Polecenie removeAll() nie resetuje układu widżetu.

Przykładowy notes

W poniższym notesie pokazano, jak działa ustawienie Uruchom dostępne polecenia . Widżet year jest tworzony za pomocą ustawienia 2014 i jest używany w interfejsie API ramki danych i poleceniach SQL.

Widgety

Po zmianie ustawienia widżetu year na 2007polecenie DataFrame zostanie ponownie uruchomione polecenie , ale polecenie SQL nie zostanie ponownie uruchomione.

Ten notes ilustruje użycie widżetów w notesie dołączonym do klastra, a nie w usłudze SQL Warehouse.

Notes pokazowy widżetu

Pobierz notes

Widżety usługi Databricks na pulpitach nawigacyjnych

Podczas tworzenia pulpitu nawigacyjnego na podstawie notesu z widżetami wejściowymi wszystkie widżety są wyświetlane u góry. W trybie prezentacji za każdym razem, gdy aktualizujesz wartość widżetu, możesz kliknąć przycisk Aktualizuj , aby ponownie uruchomić notes i zaktualizować pulpit nawigacyjny przy użyciu nowych wartości.

Pulpit nawigacyjny z widżetami

Używanie widżetów usługi Databricks z %run

Jeśli uruchomisz notes zawierający widżety, określony notes zostanie uruchomiony z wartościami domyślnymi widżetu.

Jeśli notes jest dołączony do klastra (a nie do usługi SQL Warehouse), możesz również przekazać wartości do widżetów. Na przykład:

%run /path/to/notebook $X="10" $Y="1"

W tym przykładzie jest uruchamiany określony notes i przechodzi 10 do widżetu X i 1 widżetu Y.

Ograniczenia

Aby uzyskać więcej informacji, zobacz Znane ograniczenia dotyczące notesów usługi Databricks.