Vista RUTINAS
La vista INFORMATION_SCHEMA.ROUTINES contiene una fila por cada rutina de un conjunto de datos.
Permisos obligatorios
Para consultar la vista INFORMATION_SCHEMA.ROUTINES, necesitas los siguientes permisos de gestión de identidades y accesos (IAM):
- bigquery.routines.get
- bigquery.routines.list
Cada uno de los siguientes roles de gestión de identidades y accesos predefinidos 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 los permisos de BigQuery, consulta Control de acceso con gestión de identidades y accesos.
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 | 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 | 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: 
 | 
| DATA_TYPE | STRING | El tipo de datos que devuelve la rutina. NULLsi la rutina es un procedimiento almacenado | 
| ROUTINE_BODY | STRING | Cómo se define el cuerpo de la rutina, ya sea SQLoEXTERNALsi la rutina es una función definida por el usuario de JavaScript | 
| ROUTINE_DEFINITION | STRING | La definición de la rutina | 
| EXTERNAL_LANGUAGE | STRING | JAVASCRIPTsi la rutina es una función definida por el usuario de JavaScript oNULLsi la rutina se ha definido con SQL. | 
| IS_DETERMINISTIC | STRING | YESsi se sabe que la rutina es determinista,NOsi no lo es oNULLsi se desconoce. | 
| SECURITY_TYPE | STRING | Tipo de seguridad de la rutina, siempre NULL | 
| CREATED | TIMESTAMP | Hora de creación de la rutina | 
| LAST_ALTERED | TIMESTAMP | Hora de la última modificación de la rutina | 
| DDL | STRING | La declaración de DDL
        que se puede usar para crear la rutina, como CREATE FUNCTIONoCREATE PROCEDURE | 
| CONNECTION | STRING | El nombre de la conexión, si la rutina tiene uno. De lo contrario, NULL | 
Ámbito y sintaxis
Las consultas en esta vista deben incluir un conjunto de datos o un calificador de región. Para obtener más información, consulta la sección Sintaxis. En la siguiente tabla se explican los ámbitos de región y de recurso de esta vista:
| Nombre de la vista | Ámbito de los recursos | Ámbito de la región | 
|---|---|---|
| [PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.ROUTINES | Nivel de proyecto | REGION | 
| [PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.ROUTINES | Nivel del conjunto de datos | Ubicación del conjunto de datos | 
- 
  Opcional: PROJECT_ID: el ID de tu Google Cloud proyecto. 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: el ID de tu 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, añade el ID del proyecto al conjunto de datos con el siguiente formato:
`PROJECT_ID`.INFORMATION_SCHEMA.ROUTINES
`myproject`.INFORMATION_SCHEMA.ROUTINES.
En el siguiente ejemplo se obtienen todas las columnas de la vista INFORMATION_SCHEMA.ROUTINES. Los metadatos devueltos corresponden a todas las rutinas de mydataset de tu 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 | | | | | | | | | | | | | | | | | ); | +------------------+-----------------+---------------+-----------------+----------------+--------------+--------------+-----------+--------------+--------------------+-------------------+------------------+---------------+-----------------------------+-----------------------------+-----------------------------------------------------------+