Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Fontos
Ez a funkció a nyilvános előzetes verzióban érhető el.
Ez a cikk a szintaxis és a szemantika viselkedésének változásait és különbségeit ismerteti a variáns adattípus használatakor. Ez a cikk feltételezi, hogy jártas az Azure Databricks JSON-sztringadatainak használatához. Az Azure Databricks új felhasználói számára jSON-sztringeken keresztüli változatot kell használnia, amikor olyan félig strukturált adatokat tárol, amelyek rugalmasságot igényelnek a változó vagy ismeretlen sémákhoz. Lásd a modell félig strukturált adatait.
A Databricks Runtime 15.3-at vagy újabb verzióját használva a variáns adattípussal kódolhatja és lekérdezheti a félig strukturált adatokat. A Databricks a variant használatát javasolja a részben strukturált adatok JSON-sztringek használatával történő tárolására. A változat jobb olvasási és írási teljesítménye lehetővé teszi a natív Spark-összetett típusok, például a szerkezetek és tömbök cseréjét bizonyos használati esetekben.
Hogyan kérdezhetők le a variánsadatok?
A variánsadatok ugyanazokat az operátorokat használják mezők, almezők és tömbelemek lekérdezéséhez.
Mező lekérdezéséhez használja :a következőt: . Például: column_name:field_name.
Almező lekérdezéséhez használja a következőt .: . Például: column_name:field_name.subfield_name.
Tömbelem lekérdezéséhez használja [n]n az elem egész számindexének értékét. Például egy tömb column_name:array_name[0]első értékének lekérdezéséhez.
A JSON-sztringekről a variánsokra való frissítéskor a következő különbségek szakíthatják meg a meglévő lekérdezéseket:
- Az összes variáns elérési útelem kis- és nagybetűkre érzékeny módon van egyeztetve. A JSON-sztringek nem érzékenyek a kis- és nagybetűkre. Ez azt jelenti,
column_name:FIELD_NAMEhogy a variánsok esetében éscolumn_name:field_namea tárolt adatok különböző mezőinek keresése. - A
[*]szintaxis nem támogatja a tömb összes elemének azonosítását vagy kicsomagolását. - A Variant másként kódolja az értékeket
NULL, mint a JSON-sztringek. Lásd: Variant null szabályok. - A variánsoszlopok bizonyos műveletekre korlátozások vonatkoznak. Lásd korlátozások.
JSON-sztringek konvertálása változatra és változatról
A Databricks Runtime 15.3-ban és újabb verziókban a to_json függvény további funkciókkal rendelkezik a típusok JSON-sztringekre való leadásához VARIANT . A JSON-sztringre való konvertáláskor a rendszer figyelmen kívül hagyja a VARIANT beállításokat. Lásd: to_json.
A parse_json függvény (SQL vagy Python) egy JSON-sztringet alakít át VARIANT típusra. Míg parse_json(json_string_column) a logikai inverze to_json(variant_column), a következő konverziós szabályok azt írják le, hogy miért nem a pontos inverz:
- A szabad tér nem teljesen megőrződött.
- A kulcsok sorrendje tetszőleges.
- A számok záró nullái csonkolódhatnak.
SQL
SELECT parse_json('{"key": 1, "data": [2, 3, "str"]}');
Python
spark.range(1).select(parse_json(lit('{"key": 1, "data": [2, 3, "str"]}'))).display()
A parse_json függvény hibát ad vissza, ha a JSON-sztring hibás, túllépi a variánsméretkorlátot, vagy érvénytelen.
try_parse_json A függvény (SQL vagy Python) használatával ehelyett egy elemzési hiba esetén ad vissza egy NULL hibát.
SQL
SELECT try_parse_json('{"a" : invalid, "b" : 2}');
Python
spark.range(1).select(try_parse_json(lit('{"a" : invalid, "b" : 2}'))).display()
Mik az SQL-függvények a változatok kezeléséhez?
A Databricks Runtime 15.3-ban és újabb verziókban elérhető Apache Spark SQL-függvények metódusokat biztosítanak a variánsadatok kezeléséhez. Az alábbi táblázat tartalmazza az új függvényt, a megfelelő JSON-sztringfüggvényt, valamint a viselkedésbeli különbségek megjegyzéseit.
A variánsok a JSON-sztringeknél eltérő módon kezelik az öntvényeket NULL. Lásd: Variant type casting rules and Variant null rules.
Feljegyzés
Ha ezeket a függvényeket PySpark DataFrame-ekkel szeretné használni, importálja őket a rendszerből pyspark.sql.functions.
| Variant függvény | JSON-sztringfüggvény | Jegyzetek |
|---|---|---|
| variant_get | öntött és get_json_object | Kifejezést, elérési utat és típust vesz fel. A variánsok elérési útjaira, az öntésre és a null értékekre vonatkozó összes szabályt követi. |
| try_variant_get | try_cast és get_json_object | Kifejezést, elérési utat és típust vesz fel. A variánsok elérési útjaira, az öntésre és a null értékekre vonatkozó összes szabályt követi. |
| is_variant_null | null értékű | Ellenőrzi, hogy a kifejezés VARIANT kódolt-e NULL. A beviteli kifejezés értékének is nullellenőrzésére használhatóNULL. |
| schema_of_variant | schema_of_json | Egy séma ARRAY<elementType>meghatározásakor a elementType rendszer arra következtethet, hogy VARIANT ütköző típusok találhatók az adatokban. |
| schema_of_variant_agg | schema_of_json_agg | Ha a legkevésbé gyakori típus nincs azonosítva, a típus a következőképpen lesz származtatva VARIANT: . |
| variant_explode | felrobban | Kimenetek posés keyvalue oszlopok. Tömb felrobbantásakor a kimeneti kulcs mindig null értékű. |
| variant_explode_outer | explode_outer | Kimenetek posés keyvalue oszlopok. Tömb felrobbantásakor a kimeneti kulcs mindig null értékű. |