Gestionar rutinas
En BigQuery, las rutinas son un tipo de recurso que incluye lo siguiente:
- Procedimientos almacenados.
- Funciones definidas por el usuario (UDF), incluidas las funciones remotas.
- Funciones de tabla.
En este documento se describen las tareas que son comunes a todos los tipos de rutinas de BigQuery.
Permisos
Para hacer referencia a una rutina en una consulta de SQL, debes tener el permiso bigquery.routines.get
. Para conceder acceso a las rutinas, puedes asignar un rol de gestión de identidades y accesos con el permiso bigquery.routines.get
al conjunto de datos o a la rutina en cuestión. Si se concede acceso a nivel de conjunto de datos, la principal tendrá acceso a todas las rutinas del conjunto de datos. Para obtener más información, consulta el artículo sobre cómo controlar el acceso a los recursos con la gestión de identidades y accesos.
De forma predeterminada, también necesitas permiso para acceder a los recursos a los que hace referencia la rutina, como tablas o vistas. En el caso de las funciones definidas por el usuario y las funciones de tabla, puede autorizar la función para que acceda a esos recursos en nombre de la persona que llama. Para obtener más información, consulta Funciones autorizadas.
Crear una rutina
Para crear una rutina, debes tener el permiso bigquery.routines.create
.
SQL
En función del tipo de rutina, ejecuta una de las siguientes instrucciones DDL:
API
Llama al método routines.insert
con un recurso Routine
definido.
Mostrar rutinas
Para enumerar las rutinas de un conjunto de datos, debes tener los permisos bigquery.routines.get
y bigquery.routines.list
.
Consola
En la Google Cloud consola, abre la página de BigQuery.
En el panel Explorador, expande tu proyecto y selecciona un conjunto de datos.
Despliega la lista Rutinas.
SQL
Consulta la vista INFORMATION_SCHEMA.ROUTINES
:
En la Google Cloud consola, ve a la página BigQuery.
En el editor de consultas, introduce la siguiente instrucción:
SELECT COLUMN_LIST FROM { DATASET | REGION }.INFORMATION_SCHEMA.ROUTINES;
Haz clic en
Ejecutar.
Para obtener más información sobre cómo ejecutar consultas, consulta Ejecutar una consulta interactiva.
Haz los cambios siguientes:
- COLUMN_LIST: una lista de columnas separadas por comas de la
INFORMATION_SCHEMA.ROUTINES
vista. - DATASET: el nombre de un conjunto de datos de tu proyecto.
- REGION: un calificador de región.
Ejemplo:
SELECT routine_name, routine_type, routine_body FROM mydataset.INFORMATION_SCHEMA.ROUTINES;
+------------------+----------------+--------------+
| routine_name | routine_type | routine_body |
+------------------+----------------+--------------+
| AddFourAndDivide | FUNCTION | SQL |
| create_customer | PROCEDURE | SQL |
| names_by_year | TABLE FUNCTION | SQL |
+------------------+----------------+--------------+
bq
Usa el comando bq ls
con la marca --routines
:
bq ls --routines DATASET
Haz los cambios siguientes:
- DATASET: el nombre de un conjunto de datos de tu proyecto.
Ejemplo:
bq ls --routines mydataset
Id Routine Type Language Creation Time Last Modified Time
------------------ ----------------------- ---------- ----------------- --------------------
AddFourAndDivide SCALAR_FUNCTION SQL 05 May 01:12:03 05 May 01:12:03
create_customer PROCEDURE SQL 21 Apr 19:55:51 21 Apr 19:55:51
names_by_year TABLE_VALUED_FUNCTION SQL 01 Sep 22:59:17 01 Sep 22:59:17
API
Llama al método routines.list
con el ID del conjunto de datos.
Ver el cuerpo de una rutina
Para ver el cuerpo de una rutina, debes tener el permiso bigquery.routines.get
.
Consola
En la Google Cloud consola, abre la página de BigQuery.
En el panel Explorador, expande tu proyecto y selecciona un conjunto de datos.
Despliega la lista Rutinas.
Selecciona la rutina. El cuerpo de la rutina se muestra en Routine query.
SQL
Selecciona la columna routine_definition
de la vista INFORMATION_SCHEMA.ROUTINES
:
En la Google Cloud consola, ve a la página BigQuery.
En el editor de consultas, introduce la siguiente instrucción:
SELECT routine_definition FROM { DATASET | REGION }.INFORMATION_SCHEMA.ROUTINES WHERE routine_name = ROUTINE_NAME;
Haz clic en
Ejecutar.
Para obtener más información sobre cómo ejecutar consultas, consulta Ejecutar una consulta interactiva.
Haz los cambios siguientes:
- DATASET: el nombre de un conjunto de datos de tu proyecto.
- REGION: un calificador de región.
- ROUTINE_NAME: el nombre de la rutina.
Ejemplo:
SELECT routine_definition FROM mydataset.INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'AddFourAndDivide';
+--------------------+
| routine_definition |
+--------------------+
| (x + 4) / y |
+--------------------+
bq
Usa el comando bq show
con la marca --routine
:
bq show --routine DATASET.ROUTINE_NAME
Haz los cambios siguientes:
- DATASET: el nombre de un conjunto de datos de tu proyecto.
- ROUTINE_NAME: el nombre de la rutina.
Ejemplo:
bq show --routine mydataset.AddFourAndDivide
Id Routine Type Language Signature Definition Creation Time Last Modified Time
------------------ ----------------- ---------- ------------------------------- ------------- ----------------- --------------------
AddFourAndDivide SCALAR_FUNCTION SQL (x INT64, y INT64) -> FLOAT64 (x + 4) / y 05 May 01:12:03 05 May 01:12:03
API
Llama al método routines.get
con el ID del conjunto de datos y el nombre de la rutina. El cuerpo de la rutina se devuelve en el objeto Routine
.
Eliminar una rutina
Para eliminar una rutina, debes tener el permiso bigquery.routines.delete
.
Consola
En la Google Cloud consola, abre la página de BigQuery.
En el panel Explorador, expande tu proyecto y selecciona un conjunto de datos.
Despliega la lista Rutinas.
Selecciona la rutina.
Abre la opción
Acciones y haz clic en Eliminar.Escribe
"delete"
en el cuadro de diálogo y haz clic en Eliminar para confirmar la acción.
SQL
En función del tipo de rutina, ejecuta una de las siguientes instrucciones DDL:
- Procedimiento almacenado:
DROP PROCEDURE
- Función definida por el usuario:
DROP FUNCTION
- Función de tabla:
DROP TABLE FUNCTION
Ejemplo:
DROP FUNCTION IF EXISTS mydataset.AddFourAndDivide
bq
Usa el comando bq rm
con la marca --routine
:
bq rm --routine DATASET.ROUTINE_NAME
Haz los cambios siguientes:
- DATASET: el nombre de un conjunto de datos de tu proyecto.
- ROUTINE_NAME: el nombre de la rutina.
Ejemplo:
bq rm --routine mydataset.AddFourAndDivide
API
Llama al método routines.delete
con el ID del conjunto de datos y el nombre de la rutina.