Megosztás a következőn keresztül:


Lekérdezési előzmények rendszertáblázatának referenciája

Fontos

Ez a rendszertábla a nyilvános előzetes verzióban van. A tábla eléréséhez engedélyezni kell a sémát a system katalógusban. További információ: Rendszertábla-sémák engedélyezése.

Ez a cikk a lekérdezéselőzmények rendszertáblájára vonatkozó információkat tartalmazza, beleértve a tábla sémájának vázlatát is.

Fontos

A lekérdezési előzmények rendszertáblájának eléréséhez engedélyeznie kell a query sémát. A rendszerséma engedélyezésével kapcsolatos utasításokért lásd: Rendszertábla-sémák engedélyezése.

tábla elérési útja: Ez a rendszertábla található a system.query.history.

A lekérdezéselőzmények táblájának használata

A lekérdezéselőzmények táblázata sql-raktárak vagy kiszolgáló nélküli számítás használatával futtatott lekérdezések rekordjait tartalmazza jegyzetfüzetekhez és feladatokhoz. A tábla az összes munkaterület fiókszintű rekordjait tartalmazza ugyanabban a régióban, ahonnan a táblához hozzáfér.

Alapértelmezés szerint csak a rendszergazdák férhetnek hozzá a rendszertáblához. Ha meg szeretné osztani a tábla adatait egy felhasználóval vagy csoporttal, a Databricks azt javasolja, hogy minden felhasználóhoz vagy csoporthoz hozzon létre egy dinamikus nézetet. Lásd: Dinamikus nézet létrehozása.

Lekérdezési előzmények rendszertáblázatának sémája

A lekérdezéselőzmény-tábla a következő sémát használja:

Oszlop neve Adattípus Leírás Példa
account_id húr A fiók azonosítója. 11e22ba4-87b9-4cc2
-9770-d10b894b7118
workspace_id húr Annak a munkaterületnek az azonosítója, amelyen a lekérdezést futtatták. 1234567890123456
statement_id húr Az az azonosító, amely egyedileg azonosítja az utasítás végrehajtását. Ezzel az azonosítóval megkeresheti az utasítás végrehajtását a Lekérdezéselőzmények felhasználói felületén. 7a99b43c-b46c-432b
-b0a7-814217701909
session_id húr A Spark-munkamenet azonosítója. 01234567-cr06-a2mp
-t0nd-a14ecfb5a9c2
execution_status húr Az utasítás felmondási állapota. A lehetséges értékek a következők:
- FINISHED: a végrehajtás sikeres volt
- FAILED: a végrehajtás a kísérő hibaüzenetben leírt hiba okával meghiúsult
- CANCELED: a végrehajtás megszakadt
FINISHED
compute Struct Egy szerkezet, amely az utasítás futtatásához használt számítási erőforrás típusát és adott esetben az erőforrás azonosítóját jelöli. Az type érték vagy a WAREHOUSESERVERLESS_COMPUTE. {
type: WAREHOUSE,
cluster_id: NULL,
warehouse_id: ec58ee3772e8d305
}
executed_by_user_id húr Az utasítást végrehajtó felhasználó azonosítója. 2967555311742259
executed_by húr Az utasítást végrehajtó felhasználó e-mail-címe vagy felhasználóneve. example@databricks.com
statement_text húr Az SQL-utasítás szövege. Ha ügyfél által felügyelt kulcsokat konfigurált, statement_text üres. A tárolási korlátozások miatt a hosszabb utasítás szöveges értékei tömörítve lesznek. Még tömörítés esetén is elérheti a karakterkorlátot. SELECT 1
statement_type húr Az utasítás típusa. Például: ALTER, COPYés INSERT. SELECT
error_message húr A hibafeltételt leíró üzenet. Ha ügyfél által felügyelt kulcsokat konfigurált, error_message üres. [INSUFFICIENT_PERMISSIONS]
Insufficient privileges:
User does not have
permission SELECT on table
'default.nyctaxi_trips'.
client_application húr Az utasítást futtató ügyfélalkalmazás. Például: Databricks SQL Editor, Tableau és Power BI. Ez a mező az ügyfélalkalmazások által biztosított információkból származik. Bár az értékek várhatóan statikusak maradnak az idő függvényében, ez nem garantálható. Databricks SQL Editor
client_driver húr Az az összekötő, amelyet a Databrickshez való csatlakozáshoz használnak az utasítás végrehajtásához. Például: Databricks SQL Driver for Go, Databricks ODBC Driver, Databricks JDBC Driver. Databricks JDBC Driver
total_duration_ms bigint Az utasítás teljes végrehajtási ideje ezredmásodpercben (az eredménylehívási idő kivételével). 1
waiting_for_compute_duration_ms bigint A számítási erőforrások kiépítésére való várakozással töltött idő ezredmásodpercben. 1
waiting_at_capacity_duration_ms bigint A rendelkezésre álló számítási kapacitás várakozási ideje ezredmásodpercben. 1
execution_duration_ms bigint Az utasítás végrehajtásával töltött idő ezredmásodpercben. 1
compilation_duration_ms bigint A metaadatok betöltésével és az utasítás optimalizálásával töltött idő ezredmásodpercben. 1
total_task_duration_ms bigint Az összes tevékenység-időtartam összege ezredmásodpercben. Ez az idő az összes csomópont összes magjára kiterjedő lekérdezés futtatásához eltelt időt jelöli. A fali óra időtartamánál jelentősen hosszabb lehet, ha több feladatot hajt végre párhuzamosan. A fali óra időtartamánál rövidebb is lehet, ha a tevékenységek az elérhető csomópontokra várnak. 1
result_fetch_duration_ms bigint Ezredmásodpercben az utasítás eredményének lekérése a végrehajtás befejezése után. 1
start_time időbélyeg Az az időpont, amikor a Databricks megkapta a kérést. Az időzónára vonatkozó adatokat az érték végén rögzíti a rendszer, és +00:00 UTC-t jelöl. 2022-12-05T00:00:00.000+0000
end_time időbélyeg Az utasítás végrehajtásának befejezése, az eredménylehívási idő kivételével. Az időzónára vonatkozó adatokat az érték végén rögzíti a rendszer, és +00:00 UTC-t jelöl. 2022-12-05T00:00:00.000+00:00
update_time időbélyeg Az az időpont, amikor a nyilatkozat legutóbb megkapta az előrehaladási frissítést. Az időzónára vonatkozó adatokat az érték végén rögzíti a rendszer, és +00:00 UTC-t jelöl. 2022-12-05T00:00:00.000+00:00
read_partitions bigint A metszés után beolvasott partíciók száma. 1
pruned_files bigint A metszett fájlok száma. 1
read_files bigint A metszés után beolvasott fájlok száma. 1
read_rows bigint Az utasítás által beolvasott sorok teljes száma. 1
produced_rows bigint Az utasítás által visszaadott sorok teljes száma. 1
read_bytes bigint Az utasítás által beolvasott adatok teljes mérete bájtban. 1
read_io_cache_percent egész Az IO-gyorsítótárból beolvasott állandó adatok bájtjainak százalékos aránya. 50
from_result_cache Logikai TRUE azt jelzi, hogy az utasítás eredménye a gyorsítótárból lett beolvasva. TRUE
spilled_local_bytes bigint Az adatok mérete bájtban, ideiglenesen lemezre írva az utasítás végrehajtása közben. 1
written_bytes bigint A felhőobjektum-tárolóba írt állandó adatok bájtban megadott mérete. 1
shuffle_read_bytes bigint A hálózaton keresztül küldött bájtokban lévő adatok teljes mennyisége. 1
query_source Struct Olyan szerkezet, amely kulcs-érték párokat tartalmaz, amelyek egy vagy több Databricks-entitást képviselnek, amelyek részt vettek az utasítás végrehajtásában, például feladatok, jegyzetfüzetek vagy irányítópultok. Ez a mező csak a Databricks-entitásokat rögzíti. {
alert_id: null,
sql_query_id: null,
dashboard_id: 887406461287882,
notebook_id: null,
job_info: null,
legacy_dashboard_id: null,
genie_space_id: null
}
executed_as húr Annak a felhasználónak vagy szolgáltatásnévnek a neve, akinek a jogosultságát az utasítás futtatásához használták. example@databricks.com
executed_as_user_id húr Annak a felhasználónak vagy szolgáltatásnévnek az azonosítója, akinek a jogosultságát az utasítás futtatásához használták. 2967555311742259

Rekord lekérdezésprofiljának megtekintése

Ha egy lekérdezés lekérdezési profiljára szeretne navigálni a lekérdezéselőzménytáblában lévő rekord alapján, tegye a következőket:

  1. Azonosítsa a rekordot, majd másolja ki a rekordot statement_id.
  2. A rekordra workspace_id hivatkozva győződjön meg arról, hogy ugyanabba a munkaterületre van bejelentkezve, mint a rekord.
  3. Kattintson Előzmények ikona Lekérdezési előzmények elemre a munkaterület oldalsávjában.
  4. Az Utasítás azonosítója mezőbe illessze be a statement_id rekordot.
  5. Kattintson egy lekérdezés nevére. Megjelenik a lekérdezési metrikák áttekintése.
  6. Kattintson a Lekérdezésprofil megtekintése elemre.

A lekérdezési előzmények materializálása a metaadattárból

Az alábbi kód egy óránként, naponta vagy hetente futó feladat létrehozására használható, amely egy metaadattár lekérdezési előzményeit hozza létre. Ennek megfelelően állítsa be a HISTORY_TABLE_PATH és LOOKUP_PERIOD_DAYS változókat.

from delta.tables import *
from pyspark.sql.functions import *
from pyspark.sql.types import *

HISTORY_TABLE_PATH = "jacek.default.history"
# Adjust the lookup period according to your job schedule
LOOKUP_PERIOD_DAYS = 1

def table_exists(table_name):
    try:
        spark.sql(f"describe table {table_name}")
        return True
    except Exception:
        return False

def save_as_table(table_path, df, schema, pk_columns):
    deltaTable = (
        DeltaTable.createIfNotExists(spark)
        .tableName(table_path)
        .addColumns(schema)
        .execute()
    )

    merge_statement = " AND ".join([f"logs.{col}=newLogs.{col}" for col in pk_columns])

    result = (
        deltaTable.alias("logs")
        .merge(
            df.alias("newLogs"),
            f"{merge_statement}",
        )
        .whenNotMatchedInsertAll()
        .whenMatchedUpdateAll()
        .execute()
    )
    result.show()

def main():
    df = spark.read.table("system.query.history")
    if table_exists(HISTORY_TABLE_PATH):
        df = df.filter(f"update_time >= CURRENT_DATE() - INTERVAL {LOOKUP_PERIOD_DAYS} days")
    else:
        print(f"Table {HISTORY_TABLE_PATH} does not exist. Proceeding to copy the whole source table.")

    save_as_table(
        HISTORY_TABLE_PATH,
        df,
        df.schema,
        ["workspace_id", "statement_id"]
    )

main()