KEYS Function

Extracts the key values from an Object data type column and stores them in an array of String values.

Basic Usage

Column reference example:

derive type:single value:KEYS('object1') as:'objKeys'

Output: Generates a new objKeys column containing an array of all of the keys found in the key-value Objects found in the object1 column.

Array literal reference example:

See the example below.

Syntax

derive type:single value:KEYS(obj_col)

ArgumentRequired?Data TypeDescription
obj_colYString or ObjectName of column or Object literal whose keys are to be extracted into an array

For more information on syntax standards, see Language Documentation Syntax Notes.

obj_col

Object literal or name of the Object column whose keys you want to extract into an array.

Usage Notes:

Required?Data TypeExample Value
YesObject literal or column referencemyObj

Examples

Example - Basic keys example

Source:

Following dataset contains configuration blocks for individual features. These example blocks are of Object type.

Code formatting has been applied to the Object data to improve legibility.

FeatureNameConfiguration
Whiz Widget
{
 "enabled": "true",
 "maxRows": "1000",
 "maxCols": "100"
}
Magic Button
{
 "enabled": "false",
 "startDirectory": "/home",
 "maxDepth": "15"
}
Happy Path Finder
{
 "enabled": "true"
}

Transform:

The following transform extracts the key values from the Object data in the Configuration column.

derive type:single value: KEYS(Configuration) as: 'keys_Configuration'

Results:

The keys_Configuration column contains the arrays of the key values.

FeatureNameConfigurationkeys_Configuration
Whiz Widget
{
 "enabled": "true",
 "maxRows": "1000",
 "maxCols": "100"
}
["enabled","maxRows","maxCols"]
Magic Button
{
 "enabled": "false",
 "startDirectory": "/home",
 "maxDepth": "15"
}
["enabled","startDirectory","maxDepth"]
Happy Path Finder
{
 "enabled": "true"
}
["enabled"]

Example - Create an Object of product properties

Source:

Your dataset contains master product data with product properties stored in two arrays of keys and values.

ProdIdProdCategoryProdNameProdKeysProdProperties
S001ShirtsCrew Neck T-Shirt["type", "color", "fabric", "sizes"]["crew","blue","cotton","S,M,L","in stock","padded"]
S002ShirtsV-Neck T-Shirt["type", "color", "fabric", "sizes"]["v-neck","white","blend","S,M,L,XL","in stock","discount - seasonal"]
S003ShirtsTanktop["type", "color", "fabric", "sizes"]["tank","red","mesh","XS,S,M","discount - clearance","in stock"]
S004ShirtsTurtleneck["type", "color", "fabric", "sizes"]["turtle","black","cotton","M,L,XL","out of stock","padded"]

Transform:

When the above data is loaded into the Transformer page, you might need to clean up the two array columns.

Using the following transform, you can map the first element of the first array as a key for the first element of the second, which is its value. You might notice that the number of keys and the number of values are not consistent. For the extra elements in the second array, the default key of ProdMiscProperties is used:

derive type:single value: ARRAYSTOMAP(ProdProperties, ProdValues, 'ProdMiscProperties') as: 'prodPropertyMap'

You can now use the following steps to generate a new version of the keys:

drop col:ProdKeys

derive type:single value:KEYS(prodPropertyMap) as:'ProdKeys'

Results:

ProdIdProdCategoryProdNameProdKeysProdPropertiesprodPropertyMap
S001ShirtsCrew Neck T-Shirt["type", "color", "fabric", "sizes","ProdMiscProperties"]["crew","blue","cotton","S,M,L","in stock","padded"]
{
  "type": [ "crew" ],
  "color": [ "blue" ],
  "fabric": [ "cotton" ],
  "sizes": [ "S,M,L" ],
  "ProdMiscProperties": [ "in stock", "padded" ] }
S002ShirtsV-Neck T-Shirt["type", "color", "fabric", "sizes","ProdMiscProperties"]["v-neck","white","blend","S,M,L,XL","in stock","discount - seasonal"]
{
  "type": [ "v-neck" ],
  "color": [ "white" ],
  "fabric": [ "blend" ],
  "sizes": [ "S,M,L,XL" ],
  "ProdMiscProperties": [ "in stock", "discount - seasonal" ] }
S003ShirtsTanktop["type", "color", "fabric", "sizes","ProdMiscProperties"]["tank","red","mesh","XS,S,M","discount - clearance","in stock"]
{
  "type": [ "tank" ],
  "color": [ "red" ],
  "fabric": [ "mesh" ],
  "sizes": [ "XS,S,M" ],
  "ProdMiscProperties": [ "discount - clearance", "in stock" ] }
S004ShirtsTurtleneck["type", "color", "fabric", "sizes","ProdMiscProperties"]["turtle","black","cotton","M,L,XL","out of stock","padded"]
{
  "type": [ "turtle" ],
  "color": [ "black" ],
  "fabric": [ "cotton" ],
  "sizes": [ "M,L,XL" ],
  "ProdMiscProperties": [ "out of stock", "padded" ] }

Was this page helpful? Let us know how we did:

Send feedback about...

Google Cloud Dataprep Documentation
Need help? Visit our support page.