Criar e gerenciar visualizações parametrizadas

É possível criar uma visualização parametrizada de 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 CLI do Google Cloud.

  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 receber 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 SQL SELECT que pode incluir a função VIEW_PARAMETERS().

Console

  1. No console do Google Cloud , abra a lista de instâncias do Bigtable.

    Abrir a lista de instâncias

  2. Na lista, selecione uma instância.

  3. No painel de navegação, clique em Bigtable Studio.

  4. Abra uma nova guia clicando em Menu "Nova guia" e selecione Editor.

  5. No editor de consultas, escreva sua consulta SQL. A definição de consulta precisa chamar a função VIEW_PARAMETERS() para especificar um ou mais parâmetros de visualização. Exemplo:

    SELECT *
    FROM TABLE_ID
    WHERE STARTS_WITH(_key, CAST(VIEW_PARAMETERS('PARAM_NAME') AS BYTES))
    

    Substitua:

    • TABLE_ID: o ID da tabela de origem.
    • PARAM_NAME: o nome do parâmetro de visualização, entre aspas simples, a ser transmitido como argumento para a função VIEW_PARAMETERS(). Isso define o nome do parâmetro, não o valor dele no tempo de execução. Você fornece o valor de tempo de execução ao consultar a visualização parametrizada.

    Se a consulta for um SQL válido, uma mensagem Válida vai aparecer.

  6. Opcional: para formatar sua instrução no estilo SQL, clique em Formatar.

  7. Clique em Salvar e selecione Salvar como visualização lógica.

  8. Na caixa de diálogo Salvar sua visualização lógica, insira um nome para a visualização e clique em Salvar.

    A visualização aparece no painel Explorer, na lista Visualizações lógicas, com um ícone de visualização parametrizada variable_add.

    Para mais informações sobre como usar o editor de consultas, consulte Gerenciar seus dados com o Bigtable Studio.

gcloud

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

gcloud bigtable logical-views create VIEW \
  --instance=INSTANCE \
  --query="SELECT * FROM TABLE_ID WHERE STARTS_WITH(_key, CAST(VIEW_PARAMETERS('PARAM_NAME') 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 tabela e de visualização 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.
  • PARAM_NAME: o nome do parâmetro de visualização, entre aspas simples, a ser transmitido como argumento para a função VIEW_PARAMETERS(). Isso define o nome do parâmetro, não o valor dele no tempo de execução. Você fornece o valor de tempo de execução ao consultar a visualização parametrizada.

Opcional:

  • Para proteger a visualização parametrizada contra exclusão, adicione o comando com a flag --deletion-protection. Se você não aplicar essa configuração, a visualização poderá ser excluída. Para permitir explicitamente a exclusão da visualização, basta anexar --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, será possível filtrar um segmento específico dela. Para mais informações, consulte Gerenciar chave de linha linha.

Por exemplo, se uma chave de linha em uma tabela de histórico de compras armazenar o usuário, o carimbo de data/hora da data da compra e o ID do pedido, delimitados por um símbolo #, especifique 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, crie uma vista da propriedade que filtre o campo "User-ID":

Console

  1. No Bigtable Studio, abra o editor de consultas e insira a consulta SQL que filtra o segmento da chave de linha:

    SELECT *
    FROM TABLE_ID
    WHERE user_id = CAST(VIEW_PARAMETERS('user_id') AS BYTES)
    

    Substitua TABLE_ID pelo ID da tabela de origem.

  2. Clique em Salvar e selecione Salvar como visualização lógica.

  3. Na caixa de diálogo Salvar sua visualização lógica, insira um nome para a visualização e clique em Salvar.

    A visualização aparece no painel Explorer, na lista Visualizações lógicas, com um ícone de visualização parametrizada variable_add.

gcloud

Para criar uma visualização parametrizada com uma chave de linha estruturada, use o comando gcloud bigtable logical-views create.

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 tabela e de visualização 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 atualiza uma visualização lógica.

Excluir uma visualização parametrizada

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

Ver informações sobre visualizações parametrizadas

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

Console

  1. No console do Google Cloud , abra a lista de instâncias do Bigtable.

    Abrir a lista de instâncias

  2. Na lista, selecione uma instância.

  3. No painel de navegação, clique em Bigtable Studio.

  4. No painel Explorer, expanda Visualizações lógicas.

    As visualizações parametrizadas aparecem na lista com um ícone variable_add de visualização parametrizada que as diferencia das visualizações lógicas padrão.

  5. Se a instância tiver mais de 10 visualizações, clique em Mostrar mais para carregar as próximas 10.

gcloud

Para ver uma lista de visualizações lógicas de uma instância, use o comando gcloud bigtable logical-views list.

gcloud bigtable logical-views list --instance=INSTANCE

Substitua INSTANCE pelo ID da instância.

Consultar visualizações parametrizadas

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

Console

  1. No console do Google Cloud , abra a lista de instâncias do Bigtable.

    Abrir a lista de instâncias

  2. Na lista, selecione uma instância.

  3. No painel de navegação, clique em Bigtable Studio.

  4. No painel Explorer, expanda Visualizações lógicas.

  5. Ao lado da visualização parametrizada que você quer consultar, clique no menu more_vert Ações da visualização e clique em Consultar visualização.

    Um painel Parâmetros é aberto com os nomes de parâmetros de visualização pré-preenchidos.

  6. Em Parâmetros de visualização, insira os valores de tempo de execução para cada parâmetro obrigatório nos campos Valor.

    Os valores de parâmetro são transmitidos como strings. Se um parâmetro na definição da sua visualização for convertido em outro tipo (como um número inteiro ou bytes), insira o valor da string bruta.

  7. Opcional: para adicionar mais parâmetros, clique em Adicionar parâmetro e insira o nome e o valor do parâmetro. Os nomes dos parâmetros precisam ser exclusivos nos parâmetros de visualização.

  8. Clique em Salvar.

  9. No editor de consultas, clique em Executar.

    Os resultados da consulta aparecem na tabela Resultados.

    Se você executar a consulta sem fornecer os parâmetros de visualização obrigatórios, uma mensagem de erro vai aparecer na seção de resultados com um botão Editar parâmetros. Clique em Editar parâmetros para abrir o painel Parâmetros e insira os valores de parâmetro ausentes.

Os valores de parâmetro são configurados para cada guia do editor de consultas. Se você sair do Bigtable Studio durante a sessão e voltar, as guias abertas, as consultas, os resultados e os parâmetros configurados serão preservados.

Java

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 veja ou manipule o parâmetro user_id na própria consulta, oferecendo uma separação lógica limpa.

A seguir