Categorias:

Funções de dados semiestruturados e estruturados (Matriz/objeto)

OBJECT_PICK

Retorna um novo OBJECT contendo alguns dos pares chave-valor de um objeto existente.

Para identificar os pares chave-valor a serem incluídos no novo objeto, passe nas chaves como argumentos, ou passe em uma matriz contendo as chaves.

Se uma chave especificada não estiver presente no objeto de entrada, a chave é ignorada.

Sintaxe

OBJECT_PICK( <object>, <key1> [, <key2>, ... ] )

OBJECT_PICK( <object>, <array> )
Copy

Argumentos

object

O objeto de entrada.

key1, key2

Uma ou mais chaves identificando os pares chave-valor que devem ser incluídos no objeto devolvido.

array

Conjunto de chaves que identificam os pares chave-valor que devem ser incluídos no objeto devolvido.

Retornos

Retorna um novo OBJECT contendo os pares chave-valor especificados.

Notas de uso

Para OBJECTs estruturados:

  • Para os argumentos que são chaves, você deve especificar constantes.

  • Você não pode passar uma ARRAY de chaves como segundo argumento. Você deve especificar cada chave como um argumento separado.

  • A função retorna um OBJECT estruturado. O tipo de OBJECT inclui as chaves na ordem em que são especificadas.

    Por exemplo, suponha que você selecione as chaves state e city nesta ordem:

    SELECT
      OBJECT_PICK(
        {'city':'San Mateo','state':'CA','zip_code':94402}::OBJECT(city VARCHAR,state VARCHAR,zip_code DOUBLE),
        'state',
        'city') AS new_object,
      SYSTEM$TYPEOF(new_object);
    
    Copy

    A função retorna um OBJECT do tipo OBJECT(state VARCHAR, city VARCHAR).

    +-----------------------+--------------------------------------------------------------+
    | NEW_OBJECT            | SYSTEM$TYPEOF(NEW_OBJECT)                                    |
    |-----------------------+--------------------------------------------------------------|
    | {                     | OBJECT(state VARCHAR(16777216), city VARCHAR(16777216))[LOB] |
    |   "state": "CA",      |                                                              |
    |   "city": "San Mateo" |                                                              |
    | }                     |                                                              |
    +-----------------------+--------------------------------------------------------------+
    

Exemplos

O exemplo seguinte chama OBJECT_PICK para criar um novo objeto que contenha dois dos três pares chave-valor de um objeto existente:

SELECT OBJECT_PICK(
    OBJECT_CONSTRUCT(
        'a', 1,
        'b', 2,
        'c', 3
    ),
    'a', 'b'
) AS new_object;
+------------+
| NEW_OBJECT |
|------------|
| {          |
|   "a": 1,  |
|   "b": 2   |
| }          |
+------------+
Copy

No exemplo acima, as chaves são passadas como argumentos para OBJECT_PICK. Você também pode usar uma matriz para especificar as chaves, como mostrado abaixo:

SELECT OBJECT_PICK(
    OBJECT_CONSTRUCT(
        'a', 1,
        'b', 2,
        'c', 3
    ),
    ARRAY_CONSTRUCT('a', 'b')
) AS new_object;
+------------+
| NEW_OBJECT |
|------------|
| {          |
|   "a": 1,  |
|   "b": 2   |
| }          |
+------------+
Copy