Métodos de migración de los grupos de SQL dedicados de Azure Synapse Analytics a Fabric Data Warehouse

Se aplica a: ✅ Almacén en Microsoft Fabric

Este artículo describe métodos para migrar de los grupos de SQL dedicados de Azure Synapse Analytics a Microsoft Fabric Data Warehouse.

Sugerencia

Para obtener más información sobre la estrategia y la planificación de la migración, consulta Planificación de la migración: grupos de SQL dedicados de Azure Synapse Analytics a Fabric Data Warehouse.

Hay disponible una experiencia automatizada para la migración desde grupos de SQL dedicados de Azure Synapse Analytics mediante Asistente de migración de Fabric para Data Warehouse. El resto de este artículo contiene más pasos de migración manuales.

La siguiente tabla resume métodos para migrar el esquema de datos (DDL), el código de base de datos (DML) y los datos. La columna de Opción enlaza con detalles de cada escenario.

Número de opción Opción Qué hace Habilidad o preferencia Escenario
1 Fábrica de Datos Conversión de esquema (DDL)
Extracción de datos
Ingesta de datos
ADF/Canalización Se ha simplificado todo en un esquema (DDL) y la migración de datos. Se recomienda para las tablas de dimensiones.
2 Data Factory con partición Conversión de esquema (DDL)
Extracción de datos
Ingesta de datos
ADF/Canalización Usar opciones de particionamiento para aumentar el paralelismo de lectura y escritura, lo que proporciona diez veces más rendimiento frente a la opción 1, recomendado para tablas de hechos.
3 Data Factory con código acelerado Conversión de esquema (DDL) ADF/Canalización Convierta y migre primero el esquema (DDL), luego use CETAS para extraer y COPY/Data Factory para ingerir datos y maximizar así el rendimiento en la ingesta de datos.
4 Código acelerado de procedimientos almacenados Conversión de esquema (DDL)
Extracción de datos
Valoración del código
T-SQL Usuario de SQL que usa IDE con un control más pormenorizado sobre las tareas en las que desea trabajar. Usar COPY/Data Factory para procesar datos.
5 Extensión de proyecto de SQL Database para Visual Studio Code Conversión de esquema (DDL)
Extracción de datos
Valoración del código
Proyecto de SQL Proyecto de base de datos SQL para la implementación con la integración de la opción 4. Utilice COPY o Data Factory para ingresar datos.
6 CREATE EXTERNAL TABLE AS SELECT (CETAS) - Crear tabla externa como selección Extracción de datos T-SQL Extracción de datos rentable y de alto rendimiento en Azure Data Lake Storage (ADLS) Gen2. Usar COPY/Data Factory para procesar datos.
7 Migración mediante dbt Conversión de esquema (DDL)
Conversión de código de base de datos (DML)
dbt Los usuarios de dbt existentes pueden usar el adaptador de dbt Fabric para convertir su DDL y DML. A continuación, debe migrar datos mediante otras opciones de esta tabla.

Elección de la carga de trabajo para la migración inicial

Al decidir por dónde empezar en el proyecto de migración del grupo de SQL dedicado de Synapse a Fabric Data Warehouse, elige un área de la carga de trabajo donde puedas:

  • Demuestra la viabilidad de migrar a Fabric Data Warehouse entregando rápidamente los beneficios del nuevo entorno. Empieza pequeño y sencillo, y prepárate para múltiples migraciones pequeñas.
  • Permitir que el personal técnico interno tenga tiempo para obtener experiencia relevante con los procesos y herramientas que usan al migrar a otras áreas.
  • Crear una plantilla para realizar migraciones adicionales específicas del entorno de Synapse de origen, así como las herramientas y los procesos implementados para ayudar.

Sugerencia

Crea un inventario de objetos para migrar y documenta el proceso de migración de principio a fin para que puedas repetirlo en otros pools o cargas de trabajo SQL dedicadas.

El volumen de datos migrados en una migración inicial debe ser lo suficientemente grande para demostrar las capacidades y beneficios del entorno Fabric Data Warehouse, pero no demasiado grande para demostrar su valor rápidamente. Un tamaño en el rango de 1 a 10 terabytes es lo habitual.

Migración con Fabric Data Factory

Esta sección describe las opciones de Data Factory para usuarios familiarizados con Azure Data Factory y Synapse. La interfaz de arrastrar y soltar ofrece una forma sencilla de convertir DDL y migrar datos.

Fabric Data Factory puede realizar las siguientes tareas:

  • Convierte el esquema (DDL) a la sintaxis de Fabric Data Warehouse.
  • Crea el esquema (DDL) en Fabric Data Warehouse.
  • Migra los datos a Fabric Data Warehouse.

Opción 1. Migración de esquemas y datos: Asistente para copiar datos y actividad Copy ForEach

Este método utiliza el asistente de datos Data Factory Copy para conectarse al pool SQL dedicado de origen, convertir la sintaxis DDL del pool dedicado de SQL a Fabric y copiar datos a Fabric Data Warehouse. Puede seleccionar una o varias tablas de destino (para el conjunto de datos TPC-DS hay 22 tablas). Genera ForEach para recorrer en bucle la lista de tablas seleccionadas en la interfaz de usuario y generar 22 subprocesos de actividad de copia en paralelo.

  • Se generan y ejecutan 22 SELECT consultas (una por cada tabla seleccionada) en el pool SQL dedicado.
  • Asegúrate de tener la DWU y la clase de recurso adecuadas para permitir que las consultas generadas se ejecuten. Para este caso, necesita un mínimo de DWU1000 con staticrc10 para permitir que un máximo de 32 consultas controle 22 consultas enviadas.
  • La copia de datos directamente desde el pool SQL dedicado a Fabric Data Warehouse con Data Factory requiere un área de almacenamiento provisional. El proceso de ingestión consta de dos fases:
    • La primera fase extrae datos del pool SQL dedicado a ADLS. Esta fase se llama preparación.
    • La segunda fase ingiere los datos por etapas en Fabric Data Warehouse. La mayor parte del tiempo de carga se dedica a la fase de almacenamiento provisional, por lo que el almacenamiento provisional tiene un efecto significativo en el rendimiento.

Usar el asistente de copia para generar una actividad ForEach proporciona una interfaz sencilla para convertir DDL y cargar tablas seleccionadas del grupo de SQL dedicado a el Fabric Data Warehouse en un solo paso.

Sin embargo, esta opción no proporciona un rendimiento global óptimo. El staging y la necesidad de paralelizar lecturas y escrituras durante la fase de fuente a etapa son las principales fuentes de latencia. Usa esta opción solo para tablas de dimensiones.

Opción 2. Migración de DDL/Data: canalización mediante la opción de partición

Para mejorar la capacidad de procesamiento al cargar tablas de hechos más grandes con una canalización de Fabric, usa una actividad de copia para cada tabla de hechos y habilita la creación de particiones. Esta configuración ofrece el mejor rendimiento en actividad de copia.

Utiliza las particiones físicas de la tabla fuente cuando estén disponibles. Si la tabla no está físicamente particionada, especifica una columna de partición y valores mínimos y máximos para la partición dinámica. En la siguiente captura de pantalla, las opciones de Source de la canalización especifican un intervalo dinámico de particiones basado en la columna ws_sold_date_sk.

Captura de pantalla de una canalización que muestra la opción para especificar la clave principal o la fecha de la columna de partición dinámica.

La partición de datos puede aumentar el rendimiento de la fase de preparación. Considera la siguiente guía al configurarlo:

  • Dependiendo del rango de particiones, la operación puede generar más de 128 consultas y utilizar todas las ranuras de concurrencia en el pool SQL dedicado.
  • Debes escalar a un mínimo de DWU6000 para permitir que todas las consultas se ejecuten.
  • Por ejemplo, para la tabla TPC-DS web_sales, se enviaron 163 consultas al grupo de SQL dedicado. En DWU6000, se ejecutaron 128 consultas, mientras que 35 quedaron en cola.
  • La partición dinámica selecciona automáticamente la partición de intervalo. En este caso, un intervalo de 11 días para cada consulta SELECT enviada al grupo de SQL dedicado. Por ejemplo:
    WHERE [ws_sold_date_sk] > '2451069' AND [ws_sold_date_sk] <= '2451080')
    ...
    WHERE [ws_sold_date_sk] > '2451333' AND [ws_sold_date_sk] <= '2451344')
    

Para tablas de hechos, usa Data Factory con la opción de particionamiento para aumentar el rendimiento.

Sin embargo, las lecturas paralelas requieren que escales el pool SQL dedicado a una DWU superior para que pueda ejecutar las consultas de extracción. La partición mejora la tasa diez veces más que no usar particionamiento. Puedes aumentar la DWU para mayor rendimiento, pero un pool SQL dedicado permite un máximo de 128 consultas activas.

Para obtener más información sobre la correspondencia entre Synapse DWU y Fabric, consulta Blog: Correspondencia entre los grupos de SQL dedicados de Azure Synapse y el proceso de Fabric Data Warehouse.

Opción 3. Migración DDL - Asistente de copia de datos para cada actividad de copia

Las dos opciones anteriores son adecuadas para bases de datos más pequeñas . Si necesitas un mayor rendimiento, usa esta alternativa:

  1. Extrae los datos del pool SQL dedicado a ADLS para reducir la sobrecarga de etapas.
  2. Utiliza Data Factory o el comando COPY para ingerir los datos en tu almacén.

Puede seguir usando Data Factory para convertir el esquema (DDL). Usando el asistente Copiar datos, puedes seleccionar la tabla específica o Todas las tablas. Por diseño, este método migra el esquema en un solo paso, extrayendo el esquema sin filas usando la condición falsa, TOP 0 en la sentencia de consulta.

En el siguiente ejemplo de código se trata la migración del esquema (DDL) con Data Factory.

Ejemplo de código: migración de esquema (DDL) con Data Factory

Puedes usar Fabric Pipelines para migrar fácilmente tus DDL (esquemas) para objetos de tabla desde cualquier fuente de Azure SQL Database o pool SQL dedicado. Esta tubería migra el esquema (DDL) de las tablas de pool SQL dedicadas de origen a Fabric Data Warehouse.

Captura de pantalla de Fabric Data Factory que muestra un objeto Lookup que conduce a un objeto For Each. Dentro del objeto For Each, hay actividades para migrar DDL.

Diseño de canalización: parámetros

Esta canalización acepta un parámetro SchemaName, que usas para especificar qué esquemas migrar. El esquema por defecto es dbo.

En el campo Valor predeterminado, escriba una lista delimitada por comas del esquema de tabla que indica qué esquemas se van a migrar: 'dbo','tpch' para proporcionar dos esquemas: dbo y tpch.

Captura de pantalla de Data Factory que muestra la pestaña Parámetros de una canalización. En el campo Nombre, 'SchemaName'. En el campo Valor predeterminado, 'dbo','tpch', que indica que se deben migrar estos dos esquemas.

Diseño de canalización: actividad de búsqueda

Cree una actividad de búsqueda y establezca la conexión para que apunte a la base de datos de origen.

En la pestaña Configuración:

  • Establezca Tipo de almacén de datos en Externo.

  • Conexión es el grupo de SQL dedicado de Azure Synapse. Tipo de conexión: seleccione Azure Synapse Analytics.

  • Usar consulta está establecido en Consulta.

  • Construye el campo de consulta usando una expresión dinámica, para que puedas usar el parámetro SchemaName en una consulta que devuelva una lista de tablas de origen destino. Selecciona Consultar y luego Añadir contenido dinámico.

    Esta expresión dentro de la actividad de búsqueda genera una instrucción SQL para consultar las vistas del sistema para recuperar una lista de esquemas y tablas. Hace referencia al SchemaName parámetro para permitir el filtrado en los esquemas SQL. La salida de esta expresión es un array de esquemas y tablas SQL que la Actividad ForEach utiliza como entrada.

    Usa el siguiente código para devolver una lista de todas las tablas de usuario con su nombre de esquema.

    @concat('
    SELECT s.name AS SchemaName,
    t.name  AS TableName
    FROM sys.tables AS t
    INNER JOIN sys.schemas AS s
    ON t.type = ''U''
    AND s.schema_id = t.schema_id
    AND s.name in (',coalesce(pipeline().parameters.SchemaName, 'dbo'),')
    ')
    

Captura de pantalla de Data Factory que muestra la pestaña de Configuración de una Canalización. Se selecciona el botón de Consulta y se pega código en el campo de Consulta.

Diseño de canalización: bucle ForEach

Para el bucle ForEach, configure las siguientes opciones en la pestaña Configuración:

  • Desactiva el Secuencial para permitir que se ejecuten múltiples iteraciones simultáneamente.
  • Establezca Recuento de lotes en 50, limitando el número máximo de iteraciones simultáneas.
  • Utiliza contenido dinámico en el campo Elementos para referenciar la salida de la actividad de Búsqueda. Use el siguiente fragmento de código: @activity('Get List of Source Objects').output.value

Captura de pantalla que muestra la pestaña configuración de la actividad de bucle ForEach.

Diseño de canalización: actividad de copia dentro del bucle ForEach

Dentro de la actividad ForEach, agregue una actividad de copia. Este método utiliza el Lenguaje de Expresiones Dinámicas en las canalizaciones para crear una instrucción SELECT TOP 0 * FROM <TABLE> para migrar únicamente el esquema, sin datos, a un almacén de datos.

En la pestaña Origen:

  • Establezca Tipo de almacén de datos en Externo.
  • Conexión es el grupo de SQL dedicado de Azure Synapse. Tipo de conexión: seleccione Azure Synapse Analytics.
  • Establezca Usar consulta en Consulta.
  • En el campo Consulta , pega la consulta dinámica de contenido y usa esta expresión que devuelve cero filas, pero incluye el esquema de la tabla: @concat('SELECT TOP 0 * FROM ',item().SchemaName,'.',item().TableName)

Captura de pantalla de Data Factory que muestra la pestaña Origen de la actividad de copia dentro del bucle ForEach.

En la pestaña Destino:

  • Establezca Tipo de almacén de datos en Área de trabajo.
  • Configura el tipo de almacén de datos de Workspace en Data Warehouse y pon el Data Warehouse en el almacén.
  • El esquema y el nombre de la tabla de destino se definen mediante contenido dinámico.
    • El esquema hace referencia al campo de la iteración actual, SchemaName con el fragmento: @item().SchemaName
    • La tabla hace referencia a TableName con el fragmento: @item().TableName

Captura de pantalla de Data Factory que muestra la pestaña Destino de la actividad de copia dentro de cada bucle ForEach.

Diseño de canalización: Sumidero

En Receptor, apunte al almacén y haga referencia al nombre de esquema y tabla de origen.

Cuando ejecutas este pipeline, verás que tu almacén de datos se rellena con todas las tablas de tu origen, con el esquema correcto.

Migración mediante procedimientos almacenados en un pool SQL dedicado Synapse

Esta opción utiliza procedimientos almacenados para realizar la migración a Fabric Data Warehouse.

Puede obtener los ejemplos de código en microsoft/fabric-migration en GitHub.com. Este código se comparte como código abierto, así que no dude en colaborar y ayudar a la comunidad.

Qué pueden hacer los procedimientos almacenados de Fabric Migration:

  • Convierte el esquema (DDL) a la sintaxis de Fabric Data Warehouse.
  • Crea el esquema (DDL) en Fabric Data Warehouse.
  • Extraer datos del grupo de SQL dedicado de Synapse a ADLS.
  • Marcar la sintaxis de Fabric no soportada para los códigos T-SQL (procedimientos almacenados, funciones, vistas).

Esta opción es ideal para ti si:

  • Están familiarizados con T-SQL.
  • Quiero usar un entorno de desarrollo integrado para el desarrollo en T-SQL.
  • Quieres un control más detallado sobre las tareas en las que trabajas.

Puede ejecutar el procedimiento almacenado específico para la conversión del esquema (DDL), la extracción de datos o la evaluación de código de T-SQL.

Para la migración de datos, utiliza COPY INTO o Fabric Data Factory para incorporar los datos a tu almacén.

Migrar mediante los proyectos de base de datos de SQL

Fabric Data Warehouse soporta la extensión SQL Database Projects disponible dentro de Visual Studio Code.

Esta extensión está disponible en Visual Studio Code. Esta característica permite funcionalidades para el control de código fuente, las pruebas de base de datos y la validación de esquemas.

Para más información sobre control de versiones, consulte Resumen de Desarrollo y despliegue.

Utiliza esta opción si prefieres usar SQL Database Project para tu despliegue. Esta opción integra los procedimientos almacenados de Fabric Migration en el proyecto de base de datos SQL para proporcionar una experiencia de migración fluida.

Un proyecto de SQL Database puede:

  • Convierte el esquema (DDL) a la sintaxis de Fabric Data Warehouse.
  • Crea el esquema (DDL) en Fabric Data Warehouse.
  • Extraer datos del grupo de SQL dedicado de Synapse a ADLS.
  • Marcar la sintaxis no admitida para códigos T-SQL (procedimientos almacenados, funciones, vistas).

Para la migración de datos, utiliza COPY INTO o Data Factory para ingerir los datos en tu almacén.

El equipo de Microsoft Fabric CAT proporciona scripts PowerShell para extraer, crear y desplegar el código de esquemas (DDL) y de base de datos (DML) a través de un proyecto de base de datos SQL. Para una guía, consulta microsoft/fabric-migration en GitHub.

Para obtener más información sobre proyectos de SQL Database, consulte Introducción a la extensión Proyectos de SQL Database y Compilación de un proyecto de base de datos desde la línea de comandos.

Migración de datos con CETAS

El comando T-SQL CREATE EXTERNAL TABLE AS SELECT (CETAS) proporciona el método más rentable y óptimo para extraer datos de pools SQL dedicados de Azure Synapse a Azure Data Lake Storage (ADLS) Gen2.

Qué puede hacer CETAS:

  • Extraer datos en ADLS.
    • Esta opción requiere que crees el esquema (DDL) en tu almacén antes de ingerir los datos. Tenga en cuenta las opciones de este artículo para migrar el esquema (DDL).

Las ventajas de esta opción son:

  • La migración solo envía una consulta por tabla contra el pool SQL dedicado de Synapse de origen. Esta consulta no agota todos los slots de concurrencia ni bloquea los procesos ETL de producción de los clientes que se ejecutan de forma concurrente ni las consultas.
  • No necesitas escalar a DWU6000, ya que solo se usa una sola ranura de concurrencia para cada mesa, así que puedes usar DWUs más bajas.
  • El extracto se ejecuta en paralelo en todos los nodos de cómputo, y esta característica mejora el rendimiento.

Use CETAS para extraer los datos en ADLS como archivos Parquet. Los archivos Parquet proporcionan la ventaja de un almacenamiento de datos eficiente con compresión columnar que requiere menos ancho de banda para transferirse por la red. Como Fabric almacena los datos en formato Parquet Delta, la ingesta de datos es 2,5 veces más rápida que con el formato de archivo de texto, ya que durante la ingesta no se incurre en la sobrecarga de convertirlos al formato Delta.

Para aumentar el rendimiento de CETAS:

  • Agregue operaciones CETAS paralelas, lo que aumenta el uso de slots de concurrencia y permite un mayor rendimiento.
  • Escale la DWU en el grupo de SQL dedicado de Synapse.

Migración a través de dbt

Esta sección describe la opción dbt para clientes que ya usan dbt en su entorno dedicado de pool SQL Synapse.

Qué puede hacer dbt:

  • Convierte el esquema (DDL) a la sintaxis de Fabric Data Warehouse.
  • Crea el esquema (DDL) en Fabric Data Warehouse.
  • Convertir el código de base de datos (DML) en sintaxis de Fabric.

El marco dbt genera DDL y DML (scripts SQL) sobre la marcha con cada ejecución. Mediante el uso de archivos modelo expresados en SELECT sentencias, dbt traduce instantáneamente el DDL/DML a cualquier plataforma destino cambiando el perfil (cadena de conexión) y el tipo de adaptador.

El framework DBT utiliza un enfoque basado en el código. Migra los datos utilizando las opciones que aparecen en este documento, como CETAS o COPY/Data Factory.

Usando el adaptador DBT para Microsoft Fabric Data Warehouse, puedes migrar proyectos DBT existentes que se dirigen a diferentes plataformas como Azure Synapse pools SQL dedicados, Snowflake, Databricks, Google BigQuery o Amazon Redshift a un almacén con un simple cambio de configuración.

Para empezar con un proyecto de dbt que apunte a Fabric Data Warehouse, consulta el Tutorial: Configurar dbt para Fabric Data Warehouse. Este documento también incluye una opción para moverse entre diferentes almacenes y plataformas.

Ingesta de datos en Fabric Data Warehouse

Para la ingestión en Fabric Data Warehouse, usa COPY INTO o Fabric Data Factory, según prefieras. Ambos métodos son las opciones recomendadas y de mejor rendimiento, ya que tienen un rendimiento equivalente, dado que el requisito previo es que los archivos ya estén extraídos en Azure Data Lake Storage (ADLS) Gen2.

Diseña tu proceso para un rendimiento máximo teniendo en cuenta los siguientes factores:

  • Con Fabric, no hay contención de recursos al cargar varias tablas de ADLS a Fabric Data Warehouse simultáneamente. Como resultado, no hay ninguna degradación del rendimiento al cargar subprocesos paralelos. El rendimiento máximo de ingestión está limitado únicamente por la potencia de cálculo de tu capacidad de Fabric.
  • La gestión de cargas de trabajo en Fabric proporciona una separación de los recursos asignados para la carga de datos y la consulta. No hay contención de recursos mientras las consultas y la carga de datos se ejecutan al mismo tiempo.