Puedes usar la API de Data Catalog para crear y buscar entradas de conjuntos de archivos de Cloud Storage (denominados conjuntos de archivos en este documento).
Conjuntos de archivos
Un conjunto de archivos de Cloud Storage es una entrada dentro de un grupo de entradas creado por el usuario. Para obtener más información, consulta Entradas y grupos de entradas.
Se define mediante uno o más patrones de archivo que especifican un conjunto de uno o más archivos de Cloud Storage.
Requisitos del patrón de archivo:
- Un patrón de archivo debe comenzar con
gs://bucket_name/
. - El nombre del depósito debe seguir los requisitos del nombre del depósito de Cloud Storage.
- Los comodines se permiten en las partes de la carpeta y del archivo de los patrones de archivo, pero no se permiten comodines en los nombres de depósitos. Por ejemplo, consulta:
- Nombres comodín
- Documentación de referencia de la API de GcsFilesetSpec.filePatterns
- Un conjunto de archivos debe tener uno y no puede tener más de 5 patrones de conjuntos de archivos.
Puedes consultar conjuntos de archivos de Data Catalog con Dataflow SQL, pero solo si tienen un esquema definido y solo contienen archivos CSV sin filas de encabezado.
Crea grupos de entrada y conjuntos de archivos
Los conjuntos de archivos deben colocarse dentro del grupo de entrada creado por el usuario. Si no creaste un grupo de entrada, primero crea uno y, luego, crea el conjunto de archivos dentro del grupo de entrada. Puedes establecer políticas de IAM en el grupo de entrada para definir quién tiene acceso a los conjuntos de archivos y otras entradas dentro del grupo de entrada.
Console
Console
Ve a la página Dataplex > Grupos de entradas.
Haz clic en Crear grupo de entrada.
Completa el formulario Crear grupo de entrada (Create Entry Group) y haz clic en CREAR (CREATE).
Se abrirá la página Detalles del grupo de entrada (Entry group details). Con la pestaña ENTRADAS seleccionada, haz clic en CREAR.
Completa el formulario Crear conjunto de archivos (Create Fileset).
- Para adjuntar un esquema, haz clic en Definir esquema (Define Schema) a fin de abrir el formulario correspondiente. Haz clic en + ADD FIELDS a fin de agregar campos de forma individual o selecciona Editar como texto (Edit as text) en la esquina superior derecha del formulario para especificar los campos en formato JSON.
- Haz clic en Guardar (Save) para guardar el esquema.
Haz clic en Crear (Create) para crear el conjunto de archivos.
gcloud
gcloud
1. Crea un grupo de entrada
Usa el comando gcloud data-catalog entry-groups create para crear un grupo de entradas con un esquema y una descripción adjuntos.
Ejemplo:
gcloud data-catalog entry-groups create my_entrygroup \ --location=us-central1
2. Crea un conjunto de archivos dentro del grupo de entrada
Usa el comando gcloud data-catalog entries create para crear un conjunto de archivos dentro de un grupo de entradas. Este ejemplo de comando de Google Cloud CLI, a continuación, crea una entrada de conjunto de archivos que incluye el esquema de datos.
gcloud data-catalog entries create my_fileset_entry \ --location=us-central1 \ --entry-group=my_entrygroup \ --type=FILESET \ --gcs-file-patterns=gs://my-bucket/*.csv \ --schema-from-file=path_to_schema_file \ --description="Fileset description ..."
Notas de las marcas:
--gcs-file-patterns
: Consulta los Requisitos del patrón de archivos.--schema-from-file
: En el siguiente ejemplo, se muestra el formato JSON del archivo de texto del esquema que acepta la marca--schema-from-file
.[ { "column": "first_name", "description": "First name", "mode": "REQUIRED", "type": "STRING" }, { "column": "last_name", "description": "Last name", "mode": "REQUIRED", "type": "STRING" }, { "column": "address", "description": "Address", "mode": "REPEATED", "type": "STRING" } ]
Java
Antes de probar esta muestra, sigue las instrucciones de configuración para Java que se encuentran en la Guía de inicio rápido de Data Catalog sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Java de Data Catalog.
Para autenticarte en Data Catalog, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Node.js
Antes de probar esta muestra, sigue las instrucciones de configuración para Node.js que se encuentran en la Guía de inicio rápido de Data Catalog sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Node.js de Data Catalog.
Para autenticarte en Data Catalog, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Python
Antes de probar esta muestra, sigue las instrucciones de configuración para Python que se encuentran en la Guía de inicio rápido de Data Catalog sobre el uso de bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Python de Data Catalog.
Para autenticarte en Data Catalog, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
REST y línea de comandos
REST
Si no tienes acceso a las bibliotecas cliente de Cloud para tu idioma o quieres probar la API con solicitudes REST, consulta los siguientes ejemplos y consulta las APIs de REST de Data Catalog entryGroups.create y entryGroups.entries.create.
- Crea un grupo de entrada
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- project-id: el ID del proyecto de Google Cloud
- entryGroupId: El ID debe comenzar con una letra o un guion bajo, contener solo letras del alfabeto inglés, números y guiones bajos, y tener 64 caracteres como máximo.
- displayName: El nombre textual del grupo de entrada
Método HTTP y URL:
POST https://datacatalog.googleapis.com/v1/projects/project-id/locations/region/entryGroups?entryGroupId=entryGroupId
Cuerpo JSON de la solicitud:
{ "displayName": "Entry Group display name" }
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "name": "projects/my_projectid/locations/us-central1/entryGroups/my_entry_group", "displayName": "Entry Group display name", "dataCatalogTimestamps": { "createTime": "2019-10-19T16:35:50.135Z", "updateTime": "2019-10-19T16:35:50.135Z" } }
- Crea un conjunto de archivos dentro del grupo de entrada
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- project_id: el ID del proyecto de Google Cloud
- entryGroupId: ID del entryGroup existente. El conjunto de archivos se creará en este entryGroup.
- entryId: EntryId del conjunto de archivos nuevo. El ID debe comenzar con una letra o un guion bajo, contener solo letras del alfabeto inglés, números y guiones bajos, y tener como máximo 64 caracteres.
- description: Es la descripción del conjunto de archivos.
- displayName: Es el nombre textual de la entrada del conjunto de archivos.
- filePatterns: Debe comenzar con “gs://bucket_name/”. Consulta Requisitos del patrón de archivos.
- schema: Es el esquema del conjunto de archivos.
Esquema JSON de ejemplo:
{ ... "schema": { "columns": [ { "column": "first_name", "description": "First name", "mode": "REQUIRED", "type": "STRING" }, { "column": "last_name", "description": "Last name", "mode": "REQUIRED", "type": "STRING" }, { "column": "address", "description": "Address", "mode": "REPEATED", "subcolumns": [ { "column": "city", "description": "City", "mode": "NULLABLE", "type": "STRING" }, { "column": "state", "description": "State", "mode": "NULLABLE", "type": "STRING" } ], "type": "RECORD" } ] } ... }
Método HTTP y URL:
POST https://datacatalog.googleapis.com/v1/projects/project_id/locations/region/entryGroups/entryGroupId/entries?entryId=entryId
Cuerpo JSON de la solicitud:
{ "description": "Fileset description.", "displayName": "Display name", "gcsFilesetSpec": { "filePatterns": [ "gs://bucket_name/file_pattern" ] }, "type": "FILESET", "schema": { schema } }
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "name": "projects/my_project_id/locations/us-central1/entryGroups/my_entryGroup_id/entries/my_entry_id", "type": "FILESET", "displayName": "My Fileset", "description": "My Fileset description.", "schema": { "columns": [ { "type": "STRING", "description": "First name", "mode": "REQUIRED", "column": "first_name" }, { "type": "STRING", "description": "Last name", "mode": "REQUIRED", "column": "last_name" }, { "type": "RECORD", "description": "Address", "mode": "REPEATED", "column": "address", "subcolumns": [ { "type": "STRING", "description": "City", "mode": "NULLABLE", "column": "city" }, { "type": "STRING", "description": "State", "mode": "NULLABLE", "column": "state" } ] } ] }, "gcsFilesetSpec": { "filePatterns": [ "gs://my_bucket_name/chicago_taxi_trips/csv/shard-*.csv" ] }, "sourceSystemTimestamps": { "createTime": "2019-10-23T23:11:26.326Z", "updateTime": "2019-10-23T23:11:26.326Z" }, "linkedResource": "//datacatalog.googleapis.com/projects/my_project_id/locations/us-central1/entryGroups/my_entryGroup_id/entries/my_entry_id" }
Funciones, permisos y políticas de IAM
Data Catalog define las funciones de entrada y grupo de entradas para facilitar la administración de permisos de conjuntos de archivos y otros recursos de Data Catalog.
Funciones de entrada | Descripción |
---|---|
dataCatalog.entryOwner |
Propietario de una entrada o un grupo de entradas en particular.
|
dataCatalog.entryViewer |
Puede ver los detalles de entrada y entryGroup.
|
Funciones de grupo de entrada | Descripción |
---|---|
dataCatalog.entryGroupOwner |
Propietario de un entryGroup en particular.
|
dataCatalog.entryGroupCreator |
Puede crear entryGroups dentro de un proyecto. El creador de un entryGroup recibe de forma automática la función dataCatalog.entryGroupOwner .
|
Configura políticas de IAM
Los usuarios con el permiso datacatalog.<resource>.setIamPolicy
pueden establecer políticas de IAM en grupos de entradas de Data Catalog y otros recursos de Data Catalog (consulta funciones de Data Catalog).
Console
Navega a la página Detalles del grupo de entrada en la IU de Data Catalog y usa el panel de IAM ubicado en el lado derecho para otorgar o revocar permisos.
gcloud
Establece la política de IAM de un grupo de entrada con data-catalog entry-groups set-iam-policy de la CLI de Google Cloud:
gcloud data-catalog entry-groups set-iam-policy my_entrygroup \ --location=us-central1 \ policy file
Obtén la política de IAM de un grupo de entrada con data-catalog entry-groups get-iam-policy de Google Cloud CLI
gcloud data-catalog entry-groups get-iam-policy my_entrygroup \ --location=us-central1
Otorga roles de grupo de entrada
Ejemplo 1
Una empresa con diferentes contextos empresariales para sus conjuntos de archivos crea grupos de entrada order-files
y user-files
independientes:
La empresa otorga a los usuarios el rol de visualizador de grupos de entrada para order-files
, lo que significa que solo pueden buscar entradas contenidas en ese grupo de entrada. Sus resultados de la búsqueda no muestran entradas en el grupo de entrada user-files
.
Ejemplo 2
Una empresa otorga el rol de visualizador de grupo de entrada a un usuario solo en el proyecto project_entry_group
. El usuario solo podrá ver las entradas dentro de ese proyecto.
Busca conjuntos de archivos
Los usuarios pueden restringir el alcance de la búsqueda en Data Catalog mediante la faceta type
. type=entry_group
restringe la búsqueda a los grupos de entrada, mientras que type=fileset
solo busca conjuntos de archivos.
Las facetas type
se pueden usar junto con otras facetas, como projectid
.
gcloud
Busca grupos de entrada en un proyecto:
gcloud data-catalog search \ --include-project-ids=my-project "projectid=my-project type=entry_group"
Busca todos los grupos de entrada a los que puedas acceder:
gcloud data-catalog search \ --include-project-ids=my-project "type=entry_group"
Busca conjuntos de archivos en un proyecto:
gcloud data-catalog search \ --include-project-ids=my-project "type=entry.fileset"
Busca conjuntos de archivos en un proyecto (sintaxis simplificada):
gcloud data-catalog search \ --include-project-ids=my-project "type=fileset"