Delen via


schema_of_json_agg statistische functie

Van toepassing op:vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime 13.2 en hoger

Retourneert de gecombineerde schema van alle JSON-tekenreeksen in een groep in DDL-indeling.

Syntaxis

schema_of_json_agg(jsonStr [, options] ) [FILTER ( WHERE cond ) ]

Deze functie kan ook worden aangeroepen als een window-functie met behulp van de OVER clausule.

Argumenten

  • jsonStr: Een STRING letterlijke met JSON.
  • options: Een optionele letterlijke MAP met sleutels en values zijn STRING. Zie from_json functie voor meer informatie over opties.
  • cond: Een optionele BOOLEAN expressie die de rijen filtert die worden gebruikt voor aggregatie.

Retouren

Een STRING met een definitie van een matrix van structs met n velden tekenreeksen where de namen van de column worden afgeleid van de afzonderlijke set van JSON sleutels. Het veld values de afgeleide, opgemaakte SQL-typen bevatten.

De schema van elk record wordt samengevoegd op basis van de veldnaam. Wanneer twee velden met dezelfde naam een ander type voor records hebben, wordt in Azure Databricks het minst gangbare type gebruikt. Als er geen dergelijk type bestaat, wordt het type afgeleid als een STRING. Bijvoorbeeld, INT en DOUBLE word DOUBLE, terwijl STRUCT<i INT> en STRING wordt STRING.

De schema verkregen bij het lezen van een column van JSON gegevens is hetzelfde als die afgeleid van het volgende.

SELECT * FROM json.`/my/data`;

Als u de schema van één JSON tekenreeks wilt afleiden, gebruikt u schema_of_json functie.

Voorbeelden

> SELECT schema_of_json_agg(a) FROM VALUES('{"foo": "bar"}') AS data(a);
  STRUCT<foo: STRING>

> SELECT schema_of_json_agg(a) FROM VALUES('[1]') AS data(a);
  ARRAY<BIGINT>

> CREATE TEMPORARY VIEW data(a) AS VALUES
  ('{"foo": "bar",   "wing": {"ding": "dong"}}'),
  ('{"top": "level", "wing": {"stop": "go"}}')

> SELECT schema_of_json_agg(a) FROM data;
  STRUCT<foo: STRING,top: STRING,wing: STRUCT<ding: STRING, stop: STRING>>