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 WAREHOUSE SERVERLESS_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:
- Azonosítsa a rekordot, majd másolja ki a rekordot
statement_id
. - A rekordra
workspace_id
hivatkozva győződjön meg arról, hogy ugyanabba a munkaterületre van bejelentkezve, mint a rekord. - Kattintson
a Lekérdezési előzmények elemre a munkaterület oldalsávjában.
-
Az Utasítás azonosítója mezőbe illessze be a
statement_id
rekordot. - Kattintson egy lekérdezés nevére. Megjelenik a lekérdezési metrikák áttekintése.
- 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()