Criar e gerenciar visualizações parametrizadas

É possível criar uma visualização parametrizada com base em uma visualização lógica no Bigtable e realizar operações nela.

Antes de ler esta página, familiarize-se com a Visão geral das visualizações parametrizadas.

Antes de começar

Se você planeja usar a Google Cloud CLI, siga estas etapas:

  1. Instale a Google Cloud CLI.

  2. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.

  3. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init

Funções exigidas

Para ter as permissões necessárias para criar e gerenciar visualizações parametrizadas, peça ao administrador para conceder a você o papel de Administrador do Bigtable (roles/bigtable.admin) na instância.

Como alternativa, você pode pedir as seguintes permissões no nível da instância:

  • Criar: bigtable.logicalViews.create
  • Atualizar: bigtable.logicalViews.update
  • Excluir: bigtable.logicalViews.delete
  • Lista: bigtable.logicalViews.list

Para criar uma visualização parametrizada, você também precisa ter pelo menos a permissão bigtable.tables.readRows na tabela de origem.

Criar uma visualização parametrizada

Uma visualização parametrizada é uma tabela virtual definida por uma instrução SELECT do SQL que pode incluir a função VIEW_PARAMETERS().

Para criar uma visualização parametrizada, use o gcloud bigtable logical-views create comando.

gcloud bigtable logical-views create VIEW \
  --instance=INSTANCE \
  --query="SELECT * FROM TABLE_ID WHERE STARTS_WITH(_key, CAST(VIEW_PARAMETERS('VIEW_PARAMETERS') AS BYTES))"

Substitua:

  • VIEW: um ID de até 128 caracteres para a nova visualização parametrizada. O ID precisa ser exclusivo entre os IDs de tabelas e visualizações na instância.
  • INSTANCE: o ID da instância em que a visualização parametrizada será criada.
  • TABLE_ID: o ID da tabela de origem.
  • VIEW_PARAMETERS: o nome do parâmetro da visualização entre aspas simples para ser transmitido como um argumento para a VIEW_PARAMETERS() função.

Opcional:

  • Para proteger a visualização parametrizada contra exclusão, anexe o comando com a flag --deletion-protection. Se você não aplicar essa configuração, a visualização poderá ser excluída. Também é possível permitir explicitamente a exclusão da visualização anexando --no-deletion-protection. Para mais informações, consulte a seção Atualizar uma visualização parametrizada deste documento.

Criar uma visualização parametrizada com uma chave de linha estruturada

Se a tabela usar uma chave de linha estruturada, você poderá filtrar um segmento específico da chave de linha.

Por exemplo, se uma chave de linha em uma tabela de histórico de compras armazena o usuário, o carimbo de data/hora da data da compra e o ID do pedido, delimitados por um símbolo #, você pode especificar o esquema de linha da seguinte maneira:

field {
    field_name: "user_id"
    type: { bytesType { encoding { raw {} } } }
  }
  field {
    field_name: "reversed_timestamp"
    type: { timestampType { encoding { unixMicrosInt64 { encoding: {           orderedCodeBytes: {} } } } } }
  }
  field {
    field_name: "order_id"
    type: { stringType { encoding { utf8Bytes {} } } }
  }
  encoding {
    delimitedBytes { delimiter "#" }
  }

Em seguida, é possível criar uma visualização que filtra o campo de ID do usuário:

gcloud bigtable logical-views create VIEW \
    --instance=INSTANCE \
    --query="SELECT * FROM TABLE_ID WHERE user_id = CAST(VIEW_PARAMETERS('user_id') AS BYTES)"

Substitua:

  • VIEW: um ID de até 128 caracteres para a nova visualização parametrizada. O ID precisa ser exclusivo entre os IDs de tabelas e visualizações na instância.
  • INSTANCE: o ID da instância em que a visualização parametrizada será criada.
  • TABLE_ID: o ID da tabela de origem.

Atualizar uma visualização parametrizada

Você atualiza uma visualização parametrizada da mesma forma que você atualiza uma visualização lógica.

Excluir uma visualização parametrizada

Você exclui uma visualização parametrizada da mesma forma que você exclui uma visualização lógica.

Ver informações sobre visualizações parametrizadas

Você visualiza uma lista de visualizações parametrizadas da mesma forma que você visualiza uma lista de visualizações lógicas para uma instância.

Consultar visualizações parametrizadas

Você consulta visualizações parametrizadas de maneira semelhante a tabelas normais, mas fornece o mapa view_parameters na solicitação.

O exemplo a seguir mostra como consultar uma visualização parametrizada chamada purchase_history_pv, que filtra dados com base em um ID de usuário.

// Assumes 'purchase_history_pv' was created with the definition:
// SELECT * FROM purchases WHERE user_id = CAST(VIEW_PARAMETERS('user_id') AS BYTES)

String query = "SELECT customer_info[email], order_details[status], order_info[items] from purchase_history_pv";
PreparedStatement preparedStatement = dataClient.prepareStatement(query);
BoundStatement boundStatement = preparedStatement.bind().build();

// The user ID is now passed out-of-band in a view parameters map.
Map<String, Value> viewParameters = new HashMap<>();
viewParameters.put("user_id", Value.newBuilder().setType(stringType()).setStringValue(userId).build());

// Execute the query, passing the view parameters using a proto field in the request.
ResultSet rs = dataClient.executeQuery(
    boundStatement,
    viewParameters
);

Isso impede que o usuário possa visualizar ou manipular o parâmetro user_id na própria consulta, fornecendo uma separação lógica limpa.

A seguir