Compartir a través de


Requisitos y formato de la zona de aterrizaje de creación de reflejo abierta

En este artículo se detallan los requisitos de operación de tabla y columna y zona de aterrizaje para la creación de reflejo abierta en Microsoft Fabric.

Importante

Esta característica se encuentra en versión preliminar.

Una vez que haya creado la base de datos reflejada abierta a través del portal de Fabric o la API pública en el área de trabajo de Fabric, obtendrá una dirección URL de zona de aterrizaje en OneLake en la página Inicio del elemento de base de datos reflejada. Esta zona de aterrizaje es donde la aplicación crea un archivo de metadatos y aterriza los datos en formato Parquet (sin comprimir, Snappy, GZIP, ZSTD).

Captura de pantalla del portal de Fabric que muestra la ubicación de la dirección URL de la zona de aterrizaje en la página principal del elemento de base de datos reflejada.

Zona de aterrizaje

Para cada base de datos reflejada, hay una ubicación de almacenamiento única en OneLake para metadatos y tablas delta. La creación de reflejo abierta proporciona una carpeta de zona de aterrizaje para que la aplicación cree un archivo de metadatos e inserte datos en OneLake. La creación de reflejo supervisa estos archivos en la zona de aterrizaje y lee la carpeta de nuevas tablas y datos agregados.

Por ejemplo, si tiene tablas (Table A, Table B, Table C) que se van a crear en la zona de aterrizaje, cree carpetas como las siguientes direcciones URL:

  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/LandingZone/TableA
  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/LandingZone/TableB
  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/LandingZone/TableC

Archivo de metadatos en la zona de aterrizaje

Cada carpeta de tabla debe contener un archivo _metadata.json.

Este archivo de metadatos de tabla contiene un registro JSON para especificar actualmente solo las columnas de clave únicas como keyColumns.

Por ejemplo, para declarar columnas C1 y C2 como una clave única compuesta para la tabla:

{

   "keyColumns": ["C1", "C2"],

}

Si no se especifica keyColumns o _metadata.json, no se pueden actualizar o eliminar. Este archivo se puede agregar en cualquier momento, pero una vez agregado keyColumns no se puede cambiar.

Archivo de datos y formato en la zona de aterrizaje

La creación de reflejo abierta admite Parquet como formato de archivo de zona de aterrizaje con o sin compresión. Los formatos de compresión admitidos incluyen Snappy, GZIP y ZSTD.

Todos los archivos Parquet escritos en la zona de aterrizaje tienen el siguiente formato:

<RowMarker><DataColumns>

  • RowMarker: el nombre de columna es __rowMarker__ (incluidos dos caracteres de subrayado antes y después de rowMarker).

    • Valores de RowMaker:
      • 0 para INSERT
      • 1 para UPDATE
      • 2 para DELETE
      • 4 para UPSERT
  • Orden de fila: todos los registros del archivo deben estar en orden natural, tal como se aplica en la transacción. Esto es importante para que la misma fila se actualice varias veces. La creación de reflejo abierta aplica los cambios mediante el orden de los archivos.

  • Orden de archivo: los archivos se deben agregar en números que aumentan de forma monotónica.

  • Nombre de archivo: el nombre de archivo es de 20 dígitos, como 00000000000000000001.parquet para el primer archivo y 00000000000000000002.parquet para el segundo. Los nombres de archivo deben estar en números continuos. El servicio de creación de reflejo eliminará los archivos automáticamente, pero el último archivo se dejará para que el sistema del publicador pueda hacer referencia a él para agregar el siguiente archivo en secuencia.

Carga inicial

Para la carga inicial de datos en una base de datos reflejada abierta, todas las filas deben tener INSERT como marcador de fila. Sin datos RowMarker en un archivo, la creación de reflejo trata todo el archivo como INSERT.

Cambios incrementales

La creación de reflejo abierta lee los cambios incrementales en orden y los aplica a la tabla delta de destino. El orden es implícito en el registro de cambios y en el orden de los archivos.

Las filas actualizadas deben contener los datos de fila completos, con todas las columnas.

Estos son algunos datos Parquet de ejemplo del historial de filas para cambiar EmployeeLocation de EmployeeID E0001 de Redmond a Bellevue. En este escenario, la columna EmployeeID se ha marcado como una columna de clave en el archivo de metadatos en la zona de aterrizaje.

__rowMarker__,EmployeeID,EmployeeLocation
0,E0001,Redmond
0,E0002,Redmond
0,E0003,Redmond
1,E0001,Bellevue

Si se actualizan las columnas de clave, debe presentarse mediante DELETE en columnas de clave anteriores y filas INSERT con nuevas claves y datos. Por ejemplo, el historial de filas para cambiar el identificador único RowMarker para EmployeeID E0001 a E0002. No es necesario proporcionar todos los datos de columna para una fila DELETE, solo las columnas de clave.

__rowMarker__,EmployeeID,EmployeeLocation
0,E0001,Bellevue
2,E0001,NULL
0,E0002,Bellevue

Operaciones de tabla

La creación de reflejo abierta admite operaciones de tabla como agregar, quitar y cambiar el nombre de las tablas.

Agregar tabla

La creación de reflejo abierta recoge cualquier tabla agregada a la zona de aterrizaje por la aplicación. La creación de reflejo abierta analiza las posibles nuevas tablas en cada iteración.

Quitar tabla

La creación de reflejo abierta realiza un seguimiento del nombre de la carpeta. Si se elimina una carpeta de tabla, la creación de reflejo abierta quita la tabla en la base de datos reflejada.

Si se vuelve a crear una carpeta, la creación de reflejo abierta quita la tabla y la vuelve a crear con los nuevos datos de la carpeta, realizado mediante el seguimiento de la ETag de la carpeta.

Al intentar quitar una tabla, puede intentar eliminar la carpeta, pero existe la posibilidad de que la creación de reflejo abierta siga usando los datos de la carpeta, lo que provoca un error de eliminación para el publicador.

Cambio de nombre de una tabla

Para cambiar el nombre de una tabla, quite y vuelva a crear la carpeta con datos iniciales e incrementales. Los datos deberán volver a rellenarse en la tabla cuyo nombre ha cambiado.

Esquema

Se puede especificar una ruta de acceso de tabla dentro de una carpeta de esquema. Una zona de aterrizaje de esquema debe tener un nombre de carpeta <schemaname>.schema. Puede haber varios esquemas y puede haber varias tablas en un esquema.

Por ejemplo, si tiene esquemas (Schema1, Schema2) y tablas (Table A, Table B, Table C) que se van a crear en la zona de aterrizaje, cree carpetas como las siguientes rutas en OneLake:

  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/LandingZone/Schema1.schema/TableA
  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/LandingZone/Schema1.schema/TableB
  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/LandingZone/Schema2.schema/TableC

Columnas de tabla y operaciones de columna

Tipos de columna

  • Los tipos Parquet simples se admiten en la zona de aterrizaje.
  • Los tipos complejos se deben escribir como una cadena JSON.
  • Los tipos complejos binarios, como los de geografía, imágenes, etc. se pueden almacenar como tipo binario en la zona de aterrizaje.

Agregar columna

Si se agregan nuevas columnas a los archivos Parquet, la creación de reflejo abierta agrega las columnas a las tablas delta.

Eliminar columna

Si se quita una columna de los nuevos archivos de registro, la creación de reflejo abierta almacena NULL para esas columnas en filas nuevas y las filas antiguas tienen las columnas presentes en los datos. Para eliminar la columna, quite la tabla y vuelva a crear la carpeta de tabla en la zona de aterrizaje, lo cual dará lugar a la recreación de la tabla delta con nuevos esquemas y datos.

La creación de reflejo abierta siempre combina todas las columnas de la versión anterior de los datos agregados. Para quitar una columna, vuelva a crear la tabla o la carpeta.

Cambiar el tipo de columna

Para cambiar un tipo de columna, quite y vuelva a crear la carpeta con datos iniciales e incrementales con el nuevo tipo de columna. Proporcionar un nuevo tipo de columna sin volver a crear la tabla generará un error y la replicación de esa tabla se detendrá. Una vez que se vuelva a crear la carpeta de tabla, la replicación se reanuda con nuevos datos y esquema.

Renombrar columna

Para cambiar el nombre de una columna, elimine la carpeta de tabla y vuelva a crearla con todos los datos y con el nuevo nombre de columna.

Paso siguiente