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
connection STRING Nombre de la conexión, si la rutina tiene uno. De lo contrario, NULL

Para mayor estabilidad, te recomendamos que enumeres de forma explícita las columnas en tus consultas de esquema de información en lugar de usar un comodín (SELECT *). Enumerar las columnas de forma explícita evita que las consultas se interrumpan si cambia el esquema subyacente.

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: Es el ID de tu proyecto de Google Cloud . Si no se especifica, se usa el proyecto predeterminado.
  • REGION: Cualquier nombre de región del conjunto de datos. Por ejemplo, `region-us`.
  • DATASET_ID: Es 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                                                     |
|                  |                 |               |                 |                |              |              |           |              |                    |                   |                  |               |                             |                             | );                                                        |
+------------------+-----------------+---------------+-----------------+----------------+--------------+--------------+-----------+--------------+--------------------+-------------------+------------------+---------------+-----------------------------+-----------------------------+-----------------------------------------------------------+