Crea y administra vistas con parámetros
Puedes crear una vista con parámetros a partir de una vista lógica en Bigtable y, luego, realizar operaciones en vistas con parámetros.
Antes de leer esta página, familiarízate con la Descripción general de las vistas con parámetros.
Antes de comenzar
Si planeas usar Google Cloud CLI, sigue estos pasos:
-
Instala Google Cloud CLI.
-
Configura gcloud CLI para usar tu identidad federada.
Para obtener más información, consulta Accede a la gcloud CLI con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init
Roles obligatorios
Para obtener los permisos que necesitas para crear y administrar vistas con parámetros, pídele a tu administrador que te otorgue el rol de administrador de Bigtable (roles/bigtable.admin) en la instancia.
Como alternativa, puedes solicitar los siguientes permisos a nivel de la instancia:
- Crear:
bigtable.logicalViews.create - Actualizar:
bigtable.logicalViews.update - Borrar:
bigtable.logicalViews.delete - Lista:
bigtable.logicalViews.list
Para crear una vista con parámetros, también debes tener al menos el permiso bigtable.tables.readRows en la tabla de origen.
Crea una vista con parámetros
Una vista con parámetros es una tabla virtual definida por una instrucción SELECT de SQL que puede incluir la función VIEW_PARAMETERS().
Para crear una vista con parámetros, usa el
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))"
Reemplaza lo siguiente:
VIEW: Es un ID de hasta 128 caracteres para la nueva vista con parámetros. El ID debe ser único entre los IDs de tabla y los IDs de vista en la instancia.INSTANCE: Es el ID de la instancia en la que se creará la vista con parámetros.TABLE_ID: Es el ID de la tabla de origen.VIEW_PARAMETERS: Es el nombre del parámetro de la vista entre comillas simples para pasar como argumento a la funciónVIEW_PARAMETERS().
Opcional:
- Para proteger la vista con parámetros de la eliminación, agrega el comando con la marca
--deletion-protection. Si no aplicas esta configuración, la vista se puede borrar. También puedes permitir explícitamente la eliminación de la vista agregando--no-deletion-protection. Para obtener más información, consulta la sección Actualiza una vista con parámetros de este documento.
Crea una vista con parámetros con una clave de fila estructurada
Si tu tabla usa una clave de fila estructurada, puedes filtrar en un segmento específico de la clave de fila.
Por ejemplo, si una clave de fila en una tabla de historial de compras almacena el usuario, la marca de tiempo de la fecha de compra y el ID del pedido, delimitados por un símbolo #, puedes especificar el esquema de fila de la siguiente manera:
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 "#" }
}
Luego, puedes crear una vista que filtre en el campo de ID de usuario:
gcloud bigtable logical-views create VIEW \
--instance=INSTANCE \
--query="SELECT * FROM TABLE_ID WHERE user_id = CAST(VIEW_PARAMETERS('user_id') AS BYTES)"
Reemplaza lo siguiente:
VIEW: Es un ID de hasta 128 caracteres para la nueva vista con parámetros. El ID debe ser único entre los IDs de tabla y los IDs de vista en la instancia.INSTANCE: Es el ID de la instancia en la que se creará la vista con parámetros.TABLE_ID: Es el ID de la tabla de origen.
Actualiza una vista con parámetros
Actualizas una vista con parámetros de la misma manera que actualizas una vista lógica.
Borra una vista con parámetros
Borras una vista con parámetros de la misma manera que borras una vista lógica.
Visualiza información sobre las vistas con parámetros
Visualizas una lista de vistas con parámetros de la misma manera que tú visualizas una lista de vistas lógicas para una instancia.
Consulta vistas con parámetros
Consultas vistas con parámetros de manera similar a las tablas normales, pero proporcionas el mapa view_parameters en la solicitud.
En el siguiente ejemplo, se muestra cómo consultar una vista con parámetros llamada purchase_history_pv, que filtra datos según un ID de usuario.
// 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
);
Esto evita que el usuario pueda ver o manipular el parámetro user_id dentro de la consulta, lo que proporciona una separación lógica clara.