Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Accessing data in JSON Objects within DataMiner schema's

Through the database schema's page ("<appliance url>/dm/schema") it is possible to see the various tables and fields that can be queried. In certain cases it is possible that the table contain JSON objects identified as "jsonb" type fields. These are collections of additional fields.
Image Removed Image Added
To see what is contained in such an object in your DataMiner query use: SELECT

Code Block
languagesql
SELECT
library_properties::TEXT

...


FROM

...

 
cqx_data.file_library 

 

With the text in red "library_properties" being the object and table names"cqx_data.file_library" being the table name. This will show all columns & values in the object as a single string.
The result would then look like:

Alternatively you can also run:

Code Block
languagesql
SELECT

...


*

...


FROM

...

 
cqx_data.file_library 

But not run it as grid but as JSON.  

But use the Load Query as JSON instead of grid: 

This will show the properties field in a JSON format in most browsers. :
Image Modified
Once you know what is in the object you can also retrieve individual elements from it. To get an individual column from the object use the "->>" operator:

Code Block
languagesql
SELECT

...

 
library_properties ->> 'size' AS lib_size

...


FROM

...

 
cqx_data.file_library

 

With the text in red being: The object name, the item name (in the object) and SELECT statement referencing the object and the individual column name and the FROM statement the table name. To determine the item column name use the first option described above to see what items columns are contained within the JSON object. Nested JSON OBJECTS:
In some cases the JSON objects can also hold JSON objects themselves (nested objects). These can be identified because the text that appears on running an <OBJECT>::TEXT will have the following structure:
{"<NESTED OBJECT NAME1>":{"COLUMN NAME 1": <value>, "COLUMN NAME 2": <value>, … etc}, {"<NESTED OBJECT NAME2>":{"COLUMN NAME 1": <value>, "COLUMN NAME 2": <value>, … etc}, … etc}
Example:
Image Removed
Or:
Image Removed
To access elements of the nested elements you first need to get to the nested object itself and identify what information you want to get.

...

See also Nested JSON OBJECTS