Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten artykuł zawiera informacje dotyczące tabeli systemu historii zapytań, w tym konspektu schematu tabeli.
ścieżka tabeli: ta tabela systemowa znajduje się w system.query.history.
Dostępność rekordów
Dokumenty są zazwyczaj dostępne w ciągu jednej godziny. Dostarczanie danych do nowych przestrzeni roboczych może zająć więcej czasu.
Gdy tabela historii zapytań korzysta z kluczy zarządzanych przez klienta, ta dostępność nie ma zastosowania. Zobacz Odczytywanie zaszyfrowanych pól.
Korzystanie z tabeli historii zapytań
Tabela historii zapytań zawiera rekordy zapytań wykonywanych za pomocą magazynów SQL, obliczeń serwerless dla notebooków i zadań oraz potoków Lakeflow wykorzystujących serwerless lub klasyczne obliczenia. Tabela zawiera rekordy ze wszystkich przestrzeni roboczych na Twoim koncie, które znajdują się w tym samym regionie co przestrzeń, z której korzystasz do dostępu do tabeli.
Domyślnie tylko administratorzy mają dostęp do tabeli systemowej. Jeśli chcesz udostępnić dane tabeli użytkownikowi lub grupie, usługa Databricks zaleca utworzenie dynamicznego widoku dla każdego użytkownika lub grupy. Zobacz Tworzenie widoku dynamicznego.
Schemat tabeli systemu historii zapytań
Tabela historii zapytań używa następującego schematu:
| Nazwa kolumny | Typ danych | Description | Example |
|---|---|---|---|
account_id |
ciąg | Identyfikator konta. | 11e22ba4-87b9-4cc2-9770-d10b894b7118 |
workspace_id |
ciąg | Identyfikator obszaru roboczego, w którym uruchomiono zapytanie. | 1234567890123456 |
statement_id |
ciąg | Identyfikator, który jednoznacznie identyfikuje wykonanie instrukcji. Tego identyfikatora można użyć do znalezienia wykonania polecenia w UI historii zapytań. | 7a99b43c-b46c-432b-b0a7-814217701909 |
session_id |
ciąg | Identyfikator sesji platformy Spark. | 01234567-cr06-a2mp-t0nd-a14ecfb5a9c2 |
execution_status |
ciąg | Stan zakończenia instrukcji. Możliwe wartości to:
|
FINISHED |
compute |
struktura | Struktura reprezentująca typ zasobu obliczeniowego używanego do uruchamiania instrukcji i identyfikator zasobu, jeśli ma to zastosowanie. Wartość type jest jedną z:
|
{type: WAREHOUSE,cluster_id: NULL,warehouse_id: ec58ee3772e8d305} |
executed_by_user_id |
ciąg | Identyfikator użytkownika, który uruchomił polecenie. | 2967555311742259 |
executed_by |
ciąg | Adres e-mail lub nazwa użytkownika użytkownika, który uruchomił instrukcję . | example@databricks.com |
statement_text |
ciąg | Tekst instrukcji SQL. Domyślnie to pole zwraca się <REDACTED> , chyba że jesteś administratorem konta lub członkiem databricks_pii_access grupy na poziomie konta. Zobacz tekst oświadczenia z maską Access. Jeśli masz skonfigurowane klucze zarządzane przez klienta, zobacz Odczyt zaszyfrowanych pól. Ze względu na ograniczenia przechowywania, dłuższe wartości tekstowe oświadczeń są kompresowane. Nawet w przypadku kompresji można osiągnąć limit znaków. |
SELECT 1 |
statement_type |
ciąg | Typ oświadczenia. Na przykład: ALTER, COPYi INSERT. |
SELECT |
error_message |
ciąg | Komunikat opisujący warunek błędu. Jeśli masz skonfigurowane klucze zarządzane przez klienta, zobacz Odczyt zaszyfrowanych pól. | [INSUFFICIENT_PERMISSIONS] Insufficient privileges: User does not have permission SELECT on table 'default.nyctaxi_trips'. |
client_application |
ciąg | Aplikacja kliencka, która uruchomiła zapytanie. Na przykład: edytor SQL Databricks, Tableau i Power BI. To pole pochodzi z informacji dostarczanych przez aplikacje klienckie. Chociaż oczekuje się, że wartości pozostaną statyczne w czasie, nie można tego zagwarantować. | Databricks SQL Editor |
client_driver |
ciąg | Łącznik używany do połączenia z usługą Databricks w celu wykonania polecenia. Na przykład: Sterownik SQL usługi Databricks dla języka Go, sterownik ODBC usługi Databricks, sterownik JDBC usługi Databricks. | Databricks JDBC Driver |
cache_origin_statement_id |
ciąg | W przypadku wyników zapytania pobranych z pamięci podręcznej to pole zawiera identyfikator instrukcji zapytania, które pierwotnie wstawiło wynik do pamięci podręcznej. Jeśli wynik zapytania nie jest pobierany z pamięci podręcznej, to pole zawiera własny identyfikator instrukcji zapytania. | 01f034de-5e17-162d-a176-1f319b12707b |
total_duration_ms |
bigint | Całkowity czas wykonywania instrukcji w milisekundach (z wyłączeniem czasu pobierania wyników). | 1 |
waiting_for_compute_duration_ms |
bigint | Czas spędzony na oczekiwaniu na aprowizację zasobów obliczeniowych w milisekundach. | 1 |
waiting_at_capacity_duration_ms |
bigint | Czas spędzony w kolejce na dostępną pojemność obliczeniową w milisekundach. | 1 |
execution_duration_ms |
bigint | Czas spędzony na wykonywaniu instrukcji w milisekundach. | 1 |
compilation_duration_ms |
bigint | Czas poświęcony na ładowanie metadanych i optymalizowanie instrukcji w milisekundach. | 1 |
total_task_duration_ms |
bigint | Suma wszystkich czasów trwania zadań w milisekundach. Ten czas oznacza łączny czas, jaki zajęło wykonanie zapytania na wszystkich rdzeniach i węzłach. Może być znacznie dłuższy niż czas mierzony zegarem ściennym, jeśli wiele zadań jest wykonywanych równolegle. Może być krótszy niż czas trwania zegara ściany, jeśli zadania oczekują na dostępne węzły. | 1 |
result_fetch_duration_ms |
bigint | Czas spędzony w milisekundach na pobieraniu wyników instrukcji po zakończeniu jej wykonywania. | 1 |
start_time |
sygnatura czasowa | Czas, w którym Databricks odebrał żądanie. Informacje o strefie czasowej są rejestrowane na końcu wartości z +00:00 reprezentującym UTC. |
2022-12-05T00:00:00.000+0000 |
end_time |
sygnatura czasowa | Czas zakończenia wykonywania instrukcji z wyłączeniem czasu pobierania wyniku. Informacje o strefie czasowej są rejestrowane na końcu wartości z +00:00 reprezentującym UTC. |
2022-12-05T00:00:00.000+00:00 |
update_time |
sygnatura czasowa | Czas, kiedy oświadczenie ostatnio otrzymało aktualizację postępu. Informacje o strefie czasowej są rejestrowane na końcu wartości z +00:00 reprezentującym UTC. |
2022-12-05T00:00:00.000+00:00 |
read_partitions |
bigint | Liczba partycji odczytanych po oczyszczeniu. | 1 |
pruned_files |
bigint | Liczba przycinanych plików. | 1 |
read_files |
bigint | Liczba plików odczytanych po oczyszczeniu. | 1 |
read_rows |
bigint | Łączna liczba wierszy odczytanych przez instrukcję . | 1 |
produced_rows |
bigint | Łączna liczba wierszy zwracanych przez instrukcję . | 1 |
read_bytes |
bigint | Całkowity rozmiar danych odczytanych przez instrukcję w bajtach. | 1 |
pruned_files_bytes |
bigint | Liczba bajtów plików przyciętych po partycji tabeli i przycięciu plików. | 1 |
read_files_bytes |
bigint | Liczba bajtów plików czytanych po partycjonowaniu tabeli i przycinaniu plików. | 1 |
read_io_cache_percent |
int | Procent bajtów trwałych danych odczytanych z pamięci podręcznej wejścia/wyjścia. | 50 |
from_result_cache |
boolean |
TRUE wskazuje, że rezultat zapytania został pobrany z pamięci podręcznej. |
TRUE |
spilled_local_bytes |
bigint | Rozmiar danych w bajtach tymczasowo zapisywany na dysku podczas wykonywania instrukcji . | 1 |
written_bytes |
bigint | Rozmiar w bajtach trwałych danych zapisywanych w magazynie obiektów w chmurze. | 1 |
written_rows |
bigint | Liczba wierszy trwałych danych zapisywanych w magazynie obiektów w chmurze. | 1 |
written_files |
bigint | Liczba plików trwałych danych zapisywanych w magazynie obiektów w chmurze. | 1 |
shuffle_read_bytes |
bigint | Łączna ilość danych w bajtach wysyłanych przez sieć. | 1 |
query_source |
struktura | Struktura zawierająca pary klucz-wartość reprezentujące elementy Databricks, które brały udział w wykonywaniu tej instrukcji, takie jak zadania, notesy lub pulpity nawigacyjne. To pole rejestruje tylko encje Databricks. | {alert_id: 81191d77-184f-4c4e-9998-b6a4b5f4cef1,sql_query_id: null,dashboard_id: null,notebook_id: null,job_info: { job_id: 12781233243479, job_run_id: null, job_task_run_id: 110373910199121},legacy_dashboard_id: null,genie_space_id: null} |
query_parameters |
struktura | Struktura zawierająca parametry nazwane i pozycyjne używane w sparametryzowanych zapytaniach. Parametry nazwane są reprezentowane w postaci par klucz-wartość, odwzorowujących nazwy parametrów na wartości. Parametry pozycyjne są reprezentowane jako lista, na której indeks wskazuje położenie parametru. Jednocześnie może występować tylko jeden typ (nazwany lub pozycyjny). | {named_parameters: { "param-1": 1, "param-2": "hello"},pos_parameters: null,is_truncated: false} |
executed_as |
ciąg | Nazwa użytkownika lub jednostki usługi, której uprawnienie zostało użyte do uruchomienia polecenia. | example@databricks.com |
executed_as_user_id |
ciąg | Identyfikator użytkownika lub jednostki usługi, którego uprawnienie zostało użyte do uruchomienia instrukcji . | 2967555311742259 |
query_tags |
map<string, string> |
Własne tagi klucz-wartość stosowane na potrzeby zapytania do grupowania, filtrowania i przypisywania kosztów. Tagi można ustawić przy użyciu parametrów konfiguracji sesji lub instrukcji SET QUERY_TAGS SQL. Tagi wyłącznie kluczowe mają wartość null. Ta kolumna jest wypełniana tylko w przypadku zapytań uruchamianych w usłudze SQL Warehouse. Zobacz Tagi zapytań. |
{"team": "engineering","cost_center": "701","env": "prod"} |
Uzyskaj dostęp do tekstu oświadczenia maskowanego
Oświadczenia SQL mogą zawierać wrażliwe informacje, takie jak imiona klientów, adresy e-mail lub inne dane osobowe (PII). Pole statement_text zwraca się <REDACTED> domyślnie. Administratorzy kont i członkowie databricks_pii_access grupy mogą przeczytać pełny tekst zapytania.
Aby utworzyć grupę oraz zarządzać jej członkostwem i uprawnieniami, zobacz Utwórz i zarządzaj grupądatabricks_pii_access.
Rozwiązywanie problemów nakładających się masek kolumnowych
Jeśli już zastosowałeś maskę kolumnową do statement_text, na przykład za pomocą polityki kontroli dostępu opartej na atrybutach (ABAC), zapytania przeciwko system.query.history mogą zawiódć z .COLUMN_MASKS_FEATURE_NOT_SUPPORTED.MULTIPLE_MASKS Tylko jedna maska kolumnowa może być przypisana do kolumny dla danego użytkownika.
Aby rozwiązać konflikt, musisz być administratorem metastore lub mieć MANAGE go na stole. Użyj reguł dla wielu filtrów i masek, aby zidentyfikować nakładające się polityki, a następnie zawęż lub usuń maskę na .statement_text
Odczytywanie zaszyfrowanych pól
Important
Ta funkcja jest dostępna w publicznej wersji testowej.
Gdy obszary robocze używają kluczy zarządzanych przez klienta dla usług zarządzanych, pola statement_text i error_message w tabeli systemowej są domyślnie szyfrowane. Dzieje się tak, ponieważ tabele systemowe przechowują dane z i mogą być dostępne dla wszystkich obszarów roboczych w regionie. Aby odszyfrować i wyświetlić zaszyfrowane pola tabeli systemu, administratorzy kont muszą dodać konfigurację klucza do system samego katalogu. Aby wykonać tę operację, musisz mieć uprawnienia MANAGE do system katalogu.
Gdy tabela historii zapytań korzysta z kluczy zarządzanych przez klienta, typowa dostępność rekordów w dostępności rekordów nie ma zastosowania.
Ostrzeżenie
Dodanie konfiguracji klucza do system katalogu powoduje usunięcie wszelkich dotacji wykazu aparatu Unity, które zostały wcześniej zastosowane do system.query schematu system.query.history i tabeli, zresetowanie ich do domyślnych dotacji. Ponieważ dotacje są na poziomie magazynu metadanych, ma to wpływ na wszystkie obszary robocze dołączone do magazynu metadanych, w tym obszary robocze, w których nie uruchomiono polecenia. Po włączeniu kluczy zarządzanych przez klienta ponownie zastosuj wszelkie niestandardowe granty w systemach system.query i system.query.history.
Możesz utworzyć nowy klucz lub użyć go ponownie. Używając pełnego identyfikatora klucza, uruchom następujące polecenie:
curl -v -X PATCH https://my-workspace-url/api/2.1/unity-catalog/catalogs/system -H 'Authorization: Bearer <pat token>' --data '{
"managed_encryption_settings": {
"azure_key_vault_key_id": "https://my-key-vault.vault.azure.net/keys/my-key-name/my-key-version",
"azure_encryption_settings": {
"azure_tenant_id": "my-tenant-id"
}
}
}'
Daj do 24 godzin na system.query.history rozpoczęcie wyświetlania zaszyfrowanych pól.
Uwaga / Notatka
Wykaz system jest inny dla każdego magazynu metadanych, więc klucz zarządzany przez klienta musi być skonfigurowany oddzielnie dla każdego magazynu metadanych. Jednak magazyny metadanych w tym samym regionie można skonfigurować tak, aby używały tego samego klucza.
Wyświetlanie profilu zapytania dla rekordu
Aby przejść do profilu zapytania zapytania na podstawie rekordu w tabeli historii zapytań, wykonaj następujące czynności:
- Zidentyfikuj interesujący rekord, a następnie skopiuj rekord .
statement_id - Odwołaj się do właściwości rekordu
workspace_id, aby upewnić się, że jesteś zalogowany do tego samego obszaru roboczego co rekord. - Kliknij
Historia zapytań na pasku bocznym obszaru roboczego.
- W polu Identyfikator oświadczenia wklej
statement_idwartość w rekordzie. - Kliknij nazwę zapytania. Pojawi się przegląd metryk zapytań.
- Kliknij Zobacz profil zapytania.
Zrozumienie metryk skanowania
Tabela historii zapytań zawiera wiele metryk zebranych podczas skanowania. Możesz obliczyć następujące dodatkowe metryki z kolumn tabeli:
-
table_bytes: Całkowity skompresowany rozmiar, w bajtach, plików w skanowanych tabelach. Obliczone jakopruned_files_bytes + read_files_bytes. -
table_files: Całkowita liczba plików w zeskanowanych tabelach. Obliczone jakoread_files + pruned_files.
Uwaga / Notatka
read_bytes nie jest bezpośrednio porównywalne z table_bytes.
table_bytes, read_files_bytes, oraz pruned_files_bytes są skompresowanymi rozmiarami plików na dysku. W przeciwieństwie do tych rozmiarów plików, mierzy read_bytes dane faktycznie odczytywane po przycinaniu grup kolumn i wierszy. Łączy skompresowane dane odczytywane z pamięci chmurowej z nieskompresowanymi danymi dostarczanymi z pamięci podręcznej dysku i może się jeszcze bardziej zwiększyć podczas ponownych prób odczytu. W rezultacie może read_bytes przekroczyć table_bytes.
Zrozumienie kolumny query_source
Kolumna query_source zawiera zestaw unikatowych identyfikatorów jednostek Azure Databricks zaangażowanych w wykonywanie instrukcji.
Jeśli kolumna query_source zawiera wiele identyfikatorów, to oznacza, że wykonanie instrukcji wyzwolono przez wiele jednostek. Na przykład wynik zadania może wyzwolić alert, który wywołuje zapytanie SQL. W tym przykładzie wszystkie trzy identyfikatory zostaną wypełnione w pliku query_source. Wartości tej kolumny nie są sortowane według kolejności wykonywania.
Możliwe źródła zapytań to:
- alert_id: deklaracja wyzwolona przez alert
- sql_query_id: instrukcja wykonana z tej sesji edytora SQL
- dashboard_id: instrukcja wykonywana na pulpicie nawigacyjnym
- genie_space_id: instrukcja wykonana z agenta genie
- notebook_id: instrukcja wykonana z notesu
- job_info.job_id: instrukcja wykonana w ramach zadania
- job_info.job_run_id: polecenie wykonane w trakcie uruchomienia zadania
- job_info.job_task_run_id: Instrukcja wykonana w ramach uruchomienia zadania
Prawidłowe kombinacje „query_source”
W poniższych przykładach pokazano, jak kolumna query_source jest wypełniana w zależności od sposobu uruchamiania zapytania:
Podczas uruchamiania zadania wykonywane są zapytania, które obejmują wypełnioną strukturę
job_info.{alert_id: null,sql_query_id: null,dashboard_id: null,notebook_id: null,job_info: {job_id: 64361233243479,job_run_id: null,job_task_run_id: 110378410199121},legacy_dashboard_id: null,genie_space_id: null}Zapytania z alertów obejmują element
sql_query_idialert_id:{alert_id: e906c0c6-2bcc-473a-a5d7-f18b2aee6e34,sql_query_id: 7336ab80-1a3d-46d4-9c79-e27c45ce9a15,dashboard_id: null,notebook_id: null,job_info: null,legacy_dashboard_id: null,genie_space_id: null}Zapytania z pulpitów nawigacyjnych obejmują element
dashboard_id, ale niejob_info:{alert_id: null,sql_query_id: null,dashboard_id: 887406461287882,notebook_id: null,job_info: null,legacy_dashboard_id: null,genie_space_id: null}