Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
SE APLICA A:
Azure Data Factory
Azure Synapse Analytics
Sugerencia
Data Factory en Microsoft Fabric es la próxima generación de Azure Data Factory, con una arquitectura más sencilla, inteligencia artificial integrada y nuevas características. Si no está familiarizado con la integración de datos, comience con Fabric Data Factory. Las cargas de trabajo de ADF existentes pueden actualizarse a Fabric para acceder a nuevas funcionalidades en ciencia de datos, análisis en tiempo real e informes.
Los flujos de datos están disponibles tanto en canalizaciones de Azure Data Factory como en canalizaciones de Azure Synapse Analytics. Este artículo se aplica a los flujos de datos de mapeo. Si no está familiarizado con las transformaciones, consulte el artículo introductorio Transformación de datos mediante flujos de datos de asignación.
Sugerencia
Para obtener la transformación equivalente (Combinar consultas) en Dataflow Gen2, consulte Una guía de Dataflow Gen2 para usuarios de flujo de datos de mapeo.
Usa la transformación de unión para combinar datos de dos orígenes o flujos en un mismo flujo de datos de mapeo. El flujo de salida incluye todas las columnas de ambos orígenes coincidentes en función de una condición de combinación.
Tipos de combinación
El mapeo de flujos de datos admite actualmente cinco tipos de combinación diferentes.
Combinación interna
La combinación interna solo genera filas que tienen valores coincidentes en ambas tablas.
Externa izquierda
La combinación externa izquierda devuelve todas las filas del flujo izquierdo y los registros coincidentes del flujo derecho. Si una fila del flujo izquierdo no tiene ninguna coincidencia, las columnas de salida del flujo derecho se establecen en NULL. La salida es las filas devueltas por una combinación interna más las filas no coincidentes del flujo izquierdo.
Nota
El motor de Spark usado por los flujos de datos ocasionalmente produce un error debido a posibles productos cartesianos en las condiciones de unión. Si esto ocurre, puede cambiar a una combinación cruzada personalizada y escribir manualmente la condición de combinación. Esto podría dar lugar a un rendimiento más lento en los flujos de datos, ya que el motor de ejecución podría necesitar calcular todas las filas de ambos lados de la relación y, a continuación, filtrar filas.
Externa derecha
La combinación externa derecha devuelve todas las filas del flujo derecho y los registros coincidentes del flujo izquierdo. Si una fila del flujo derecho no tiene ninguna coincidencia, las columnas de salida del flujo izquierdo se establecen en NULL. La salida son las filas devueltas por un inner join más las filas no coincidentes del flujo derecho.
Externa completa
La combinación externa completa devuelve todas las columnas y filas de ambos lados con valores NULL para las columnas que no coinciden.
Combinación cruzada personalizada
La combinación cruzada genera el producto cruzado de los dos flujos en función de una condición. Si está utilizando una condición distinta a la de igualdad, especifique una expresión personalizada como su condición de combinación cruzada. El flujo de salida es todas las filas que cumplen la condición de combinación.
Puede usar este tipo de combinación para combinaciones no equivalentes y condiciones OR.
Si desea generar explícitamente un producto cartesiano completo, utilice la función de Transformación de Columna Derivada en cada uno de los dos flujos independientes, antes de la operación de combinación, para crear una clave sintética con la que realizar el emparejamiento. Por ejemplo, cree una columna en la columna derivada de cada flujo denominada SyntheticKey y establézcala como igual a 1. A continuación, use a.SyntheticKey == b.SyntheticKey como expresión de combinación personalizada.
Nota
Asegúrese de incluir al menos una columna a cada lado de la relación izquierda y derecha de una combinación cruzada personalizada. La ejecución de combinaciones cruzadas con valores estáticos en lugar de columnas a cada lado produce exámenes completos de todo el conjunto de datos, lo que provoca que el flujo de datos se realice de manera deficiente.
Combinación aproximada
Puede optar por unirse en función de la lógica de combinación aproximada en lugar de la coincidencia exacta de valores de columna activando la opción de casilla "Usar coincidencia aproximada".
- Combinar partes de texto: use esta opción para buscar coincidencias quitando espacio entre palabras. Por ejemplo, Data Factory coincide con DataFactory si esta opción está habilitada.
- Columna de puntuación de similitud: opcionalmente, puede elegir almacenar la puntuación coincidente para cada fila de una columna escribiendo un nuevo nombre de columna aquí para almacenar ese valor.
- Umbral de similitud: elija un valor entre 60 y 100 como coincidencia porcentual entre los valores de las columnas que ha seleccionado.
Nota
La coincidencia aproximada actualmente solo funciona con tipos de columnas de cadena y con tipos de combinación interna, externa izquierda y externa completa. Debe desactivar la optimización de difusión al usar combinaciones coincidentes aproximadas.
Configuración
- Elija el flujo de datos que va a combinar en la lista desplegable Right stream (Flujo derecho).
- Seleccione el tipo de combinación
- Elija las columnas clave con las que desea hacer coincidir su condición de combinación. De forma predeterminada, el flujo de datos busca la igualdad entre una columna de cada flujo. Para comparar a través de un valor calculado, pase el ratón sobre el desplegable de columna y seleccione Columna calculada.
Combinaciones no equivalentes
Para usar un operador condicional, por ejemplo, no es igual a (! =) o mayor que (>) en las condiciones de combinación, cambie la lista desplegable de operadores entre las dos columnas. Las combinaciones no equivalentes requieren que al menos uno de los dos flujos se difundan mediante la retransmisión fija en la pestaña Optimizar.
Optimización del rendimiento de combinación
A diferencia de la unión de combinación en herramientas como SSIS, la transformación Combinación no es una operación de unión de combinación obligatoria. No es necesario ordenar las claves de combinación. La operación de combinación se realiza en función de la operación de combinación óptima en Spark, ya sea una combinación de difusión o del lado de la asignación.
En las combinaciones, búsquedas y transformaciones Existe, si uno o ambos flujos de datos caben en la memoria del nodo de trabajo, puede optimizar el rendimiento al habilitar la opción Difusión. De forma predeterminada, el motor de Spark decide automáticamente si se va a difundir o no un lado. Para elegir manualmente la parte que se va a difundir, seleccione Fijo.
No se recomienda deshabilitar la difusión a través de la opción Desactivado a menos que las combinaciones experimenten errores de tiempo de espera.
Autocombinación
Para hacer una autounión de un flujo de datos consigo mismo, asigne un alias a un flujo existente mediante una transformación de selección. Para crear una nueva rama, haga clic en el icono de signo más junto a una transformación y seleccione Nueva rama. Agregue una selección de transformación para renombrar el flujo original. Agregue una transformación de combinación y elija el flujo original como el flujo izquierdo y la transformación de selección como el flujo derecho.
Pruebas de condiciones de combinación
Cuando realice pruebas de las transformaciones de unión con vista previa de los datos en modo de depuración, use un conjunto pequeño de datos conocidos. Al realizar el muestreo de filas de un conjunto de datos grande, no se puede predecir qué filas y claves se leen para realizar pruebas. El resultado es no determinista, lo que significa que las condiciones de combinación podrían no devolver ninguna coincidencia.
Script de flujo de datos
Sintaxis
<leftStream>, <rightStream>
join(
<conditionalExpression>,
joinType: { 'inner'> | 'outer' | 'left_outer' | 'right_outer' | 'cross' }
broadcast: { 'auto' | 'left' | 'right' | 'both' | 'off' }
) ~> <joinTransformationName>
Ejemplo de combinación interna
Este ejemplo es una transformación de combinación denominada JoinMatchedData que toma la secuencia izquierda TripData y la secuencia derecha TripFare. La condición de combinación es la expresión hack_license == { hack_license} && TripData@medallion == TripFare@medallion && vendor_id == { vendor_id} && pickup_datetime == { pickup_datetime} que devuelve true si coinciden las columnas hack_license, medallion, vendor_id y pickup_datetime de cada flujo. El valor de joinType es 'inner'. Vamos a habilitar la difusión solo en el flujo izquierdo, por lo que broadcast tiene el valor 'left'.
En la interfaz de usuario, esta transformación tiene este aspecto:
El script de flujo de datos para esta transformación se encuentra en este fragmento de código:
TripData, TripFare
join(
hack_license == { hack_license}
&& TripData@medallion == TripFare@medallion
&& vendor_id == { vendor_id}
&& pickup_datetime == { pickup_datetime},
joinType:'inner',
broadcast: 'left'
)~> JoinMatchedData
Ejemplo de combinación cruzada personalizada
Este ejemplo es una transformación de combinación denominada JoiningColumns que toma la secuencia LeftStream izquierda y la secuencia RightStreamderecha. Esta transformación toma dos flujos y combina todas las filas en las que la columna leftstreamcolumn es mayor que la columna rightstreamcolumn. El valor de joinType es cross. La difusión no está habilitada broadcast tiene el valor 'none'.
En la interfaz de usuario, esta transformación tiene este aspecto:
El script de flujo de datos para esta transformación se encuentra en el fragmento de código:
LeftStream, RightStream
join(
leftstreamcolumn > rightstreamcolumn,
joinType:'cross',
broadcast: 'none'
)~> JoiningColumns
Contenido relacionado
Después de combinar los datos, puede crear una columna derivada y enviar sus datos a un almacén de datos de destino.