Vista ROUTINES

La vista INFORMATION_SCHEMA.ROUTINES contiene una fila para cada rutina en un conjunto de datos.

Permisos necesarios

Para consultar la vista INFORMATION_SCHEMA.ROUTINES, necesitas los siguientes permisos de Identity and Access Management (IAM):

  • bigquery.routines.get
  • bigquery.routines.list

Cada una de las siguientes funciones predefinidas de IAM incluye los permisos que necesitas para obtener metadatos de rutina:

  • roles/bigquery.admin
  • roles/bigquery.metadataViewer
  • roles/bigquery.dataViewer

Para obtener más información sobre IAM de BigQuery, consulta Control de acceso con IAM.

Esquema

Cuando consultas la vista INFORMATION_SCHEMA.ROUTINES, los resultados de la consulta contienen una fila por cada rutina de un conjunto de datos.

La vista INFORMATION_SCHEMA.ROUTINES tiene el siguiente esquema:

Nombre de la columna Tipo de datos Valor
SPECIFIC_CATALOG STRING El nombre del proyecto que contiene el conjunto de datos en el que se define la rutina
SPECIFIC_SCHEMA STRING El nombre del conjunto de datos que contiene la rutina
SPECIFIC_NAME STRING El nombre de la rutina
ROUTINE_CATALOG STRING El nombre del proyecto que contiene el conjunto de datos en el que se define la rutina
ROUTINE_SCHEMA STRING El nombre del conjunto de datos que contiene la rutina
ROUTINE_NAME STRING El nombre de la rutina
ROUTINE_TYPE STRING El tipo de rutina:
  • FUNCTION: una función persistente de BigQuery definida por el usuario
  • PROCEDURE: un procedimiento de BigQuery almacenado
  • TABLE FUNCTION: una función de tabla de BigQuery.
DATA_TYPE STRING El tipo de datos que muestra la rutina. NULL si la rutina es un procedimiento almacenado
ROUTINE_BODY STRING La manera en la que se define el cuerpo de la rutina, ya sea SQL o EXTERNAL si la rutina es una función de JavaScript definida por el usuario
ROUTINE_DEFINITION STRING La definición de la rutina
EXTERNAL_LANGUAGE STRING JAVASCRIPT si la rutina es una función de JavaScript definida por el usuario o NULL si la rutina se definió con SQL
IS_DETERMINISTIC STRING YES si se sabe que la rutina es determinista, NO si no lo es o NULL si se desconoce
SECURITY_TYPE STRING El tipo de seguridad de la rutina, siempre NULL
CREATED TIMESTAMP La hora de creación de la rutina
LAST_ALTERED TIMESTAMP La hora en la que se modificó la rutina por última vez
DDL STRING La declaración DDL que se puede usar para crear la rutina, como CREATE FUNCTION o CREATE PROCEDURE

Permiso y sintaxis

Las consultas realizadas a esta vista deben incluir un conjunto de datos o un calificador de región. Para obtener más información, consulta Sintaxis. En la siguiente tabla, se explican los permisos de la región y los recursos para esta vista:

Nombre de la vista Permiso del recurso Permiso de la región
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.ROUTINES Nivel de proyecto REGION
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.ROUTINES Nivel de conjunto de datos Ubicación del conjunto de datos
Reemplaza lo siguiente:

  • Opcional: PROJECT_ID: el ID del proyecto de Google Cloud. Si no se especifica, se usa el proyecto predeterminado.
+ REGION: Cualquier nombre de región del conjunto de datos. Un ejemplo es region-us. DATASET_ID: El ID del conjunto de datos. Para obtener más información, consulta Calificador de conjunto de datos.

Ejemplo

-- Returns metadata for routines in a single dataset.
SELECT * FROM myDataset.INFORMATION_SCHEMA.ROUTINES;

-- Returns metadata for routines in a region.
SELECT * FROM region-us.INFORMATION_SCHEMA.ROUTINES;

Ejemplo

Ejemplo

Para ejecutar la consulta en un proyecto que no sea el predeterminado, agrega el ID del proyecto al conjunto de datos en este formato:

`PROJECT_ID`.INFORMATION_SCHEMA.ROUTINES
. Por ejemplo, `myproject`.INFORMATION_SCHEMA.ROUTINES.

En el ejemplo que se muestra a continuación, se recuperan todas las columnas de la vista INFORMATION_SCHEMA.ROUTINES. Los metadatos que se muestran corresponden a todas las rutinas de mydataset en el proyecto predeterminado: myproject. El conjunto de datos mydataset contiene una rutina llamada myroutine1.

SELECT
  *
FROM
  mydataset.INFORMATION_SCHEMA.ROUTINES;

El resultado es similar al siguiente:

+------------------+-----------------+---------------+-----------------+----------------+--------------+--------------+-----------+--------------+--------------------+-------------------+------------------+---------------+-----------------------------+-----------------------------+-----------------------------------------------------------+
| specific_catalog | specific_schema | specific_name | routine_catalog | routine_schema | routine_name | routine_type | data_type | routine_body | routine_definition | external_language | is_deterministic | security_type |           created           |         last_altered        |                            ddl                             |
+------------------+-----------------+---------------+-----------------+----------------+--------------+--------------+-----------+--------------+--------------------+-------------------+------------------+---------------+-----------------------------+-----------------------------+-----------------------------------------------------------+
| myproject        | mydataset       | myroutine1    | myproject       | mydataset      | myroutine1   | FUNCTION     | NULL      | SQL          | x + 3              | NULL              | NULL             | NULL          | 2019-10-03 17:29:00.235 UTC | 2019-10-03 17:29:00.235 UTC | CREATE FUNCTION myproject.mydataset.myroutine1(x FLOAT64) |
|                  |                 |               |                 |                |              |              |           |              |                    |                   |                  |               |                             |                             | AS (                                                      |
|                  |                 |               |                 |                |              |              |           |              |                    |                   |                  |               |                             |                             | x + 3                                                     |
|                  |                 |               |                 |                |              |              |           |              |                    |                   |                  |               |                             |                             | );                                                        |
+------------------+-----------------+---------------+-----------------+----------------+--------------+--------------+-----------+--------------+--------------------+-------------------+------------------+---------------+-----------------------------+-----------------------------+-----------------------------------------------------------+