Faça a gestão das rotinas

No BigQuery, as rotinas são um tipo de recurso que inclui o seguinte:

Este documento descreve as tarefas comuns a todos os tipos de rotinas no BigQuery.

Autorizações

Para fazer referência a uma rotina numa consulta SQL, tem de ter a autorização bigquery.routines.get. Para conceder acesso a rotinas, pode conceder uma função do IAM com a autorização bigquery.routines.get no conjunto de dados ou na rotina individual. A concessão de acesso ao nível do conjunto de dados dá ao principal acesso a todas as rotinas no conjunto de dados. Para mais informações, consulte o artigo Controle o acesso aos recursos com a IAM.

Por predefinição, também precisa de autorização para aceder a quaisquer recursos aos quais a rotina faça referência, como tabelas ou vistas. Para FDUs e funções de tabela, pode autorizar a função a aceder a esses recursos em nome do autor da chamada. Para mais informações, consulte o artigo Funções autorizadas.

Crie uma rotina

Para criar uma rotina, tem de ter a autorização bigquery.routines.create.

SQL

Consoante o tipo de rotina, execute uma das seguintes declarações DDL:

API

Chame o método routines.insert com um recurso Routine definido.

Listar rotinas

Para listar as rotinas num conjunto de dados, tem de ter as autorizações bigquery.routines.get e bigquery.routines.list.

Consola

  1. Na Trusted Cloud consola, abra a página do BigQuery.

    Aceda ao BigQuery

  2. No painel Explorador, expanda o projeto e selecione um conjunto de dados.

  3. Expanda a lista Rotinas.

SQL

Consulte a vista INFORMATION_SCHEMA.ROUTINES:

  1. Na Trusted Cloud consola, aceda à página BigQuery.

    Aceda ao BigQuery

  2. No editor de consultas, introduza a seguinte declaração:

    SELECT
      COLUMN_LIST
    FROM
       { DATASET | REGION }.INFORMATION_SCHEMA.ROUTINES;

  3. Clique em Executar.

Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.

Substitua o seguinte:

Exemplo:

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

Use o comando bq ls com a flag --routines:

bq ls --routines DATASET

Substitua o seguinte:

  • DATASET: o nome de um conjunto de dados no seu projeto.

Exemplo:

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

Chame o método routines.list com o ID do conjunto de dados.

Veja o corpo de uma rotina

Para ver o corpo de uma rotina, tem de ter a autorização bigquery.routines.get.

Consola

  1. Na Trusted Cloud consola, abra a página do BigQuery.

    Aceda ao BigQuery

  2. No painel Explorador, expanda o projeto e selecione um conjunto de dados.

  3. Expanda a lista Rotinas.

  4. Selecione a rotina. O corpo da rotina é apresentado em Consulta de rotina.

SQL

Selecione a coluna routine_definition da INFORMATION_SCHEMA.ROUTINES vista:

  1. Na Trusted Cloud consola, aceda à página BigQuery.

    Aceda ao BigQuery

  2. No editor de consultas, introduza a seguinte declaração:

    SELECT
      routine_definition
    FROM
      { DATASET | REGION }.INFORMATION_SCHEMA.ROUTINES
    WHERE
      routine_name = ROUTINE_NAME;

  3. Clique em Executar.

Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.

Substitua o seguinte:

  • DATASET: o nome de um conjunto de dados no seu projeto.
  • REGION: um qualificador de região.
  • ROUTINE_NAME: o nome da rotina.

Exemplo:

SELECT
  routine_definition
FROM
  mydataset.INFORMATION_SCHEMA.ROUTINES
WHERE
  routine_name = 'AddFourAndDivide';
+--------------------+
| routine_definition |
+--------------------+
| (x + 4) / y        |
+--------------------+

bq

Use o comando bq show com a flag --routine:

bq show --routine DATASET.ROUTINE_NAME

Substitua o seguinte:

  • DATASET: o nome de um conjunto de dados no seu projeto.
  • ROUTINE_NAME: o nome da rotina.

Exemplo:

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

Chame o método routines.get com o ID do conjunto de dados e o nome da rotina. O corpo da rotina é devolvido no objeto Routine.

Elimine uma rotina

Para eliminar uma rotina, tem de ter a autorização bigquery.routines.delete.

Consola

  1. Na Trusted Cloud consola, abra a página do BigQuery.

    Aceda ao BigQuery

  2. No painel Explorador, expanda o projeto e selecione um conjunto de dados.

  3. Expanda a lista Rotinas.

  4. Selecione a rotina.

  5. Expanda a opção Ações e clique em Eliminar.

  6. Escreva "delete" na caixa de diálogo e, de seguida, clique em Eliminar para confirmar.

SQL

Consoante o tipo de rotina, execute uma das seguintes declarações DDL:

Exemplo:

DROP FUNCTION IF EXISTS mydataset.AddFourAndDivide

bq

Use o comando bq rm com a flag --routine:

bq rm --routine DATASET.ROUTINE_NAME

Substitua o seguinte:

  • DATASET: o nome de um conjunto de dados no seu projeto.
  • ROUTINE_NAME: o nome da rotina.

Exemplo:

bq rm --routine mydataset.AddFourAndDivide

API

Chame o método routines.delete com o ID do conjunto de dados e o nome da rotina.