Breaking

Post Top Ad

Your Ad Spot

domingo, 15 de diciembre de 2019

SSIS Foreach Loop vs For Loop Container

En este artículo, primero, describiremos brevemente los bucles foreach y para los bucles. Luego, daremos una descripción general de SSIS Foreach Loop Container y For Loop Container. Finalmente, compararemos estos dos contenedores.
Este artículo es el décimo artículo de la serie cara a cara de características de SSIS, cuyo objetivo es eliminar la confusión y comparar y contrastar características similares proporcionadas por SQL Server Integration Services.

Introducción

En general, los bucles se utilizan para ejecutar una o más instrucciones repetidamente hasta que se cumpla una condición específica. Son una de las declaraciones más básicas en programación y se implementan en una amplia gama de lenguajes de programación como Java, Python, Visual Basic, C #, SQL y otros. Además de los lenguajes de programación, las funciones de bucle se implementan en el almacenamiento de datos y las tecnologías de preparación de datos, como los Servicios de integración de SQL Server.
Existen diferentes tipos de bucles, como:
  • Mientras
  • Hacer ... mientras
  • por
  • Para cada
En esta sección, describiremos brevemente el bucle for y el bucle foreach, ya que esto facilitará la comprensión de los Contenedores de bucle SSIS.

En bucle

For loop es un ciclo basado en contador que se compone de tres fases principales:
  1. Inicialización
  2. Evaluación
  3. Incremento de contador
En la primera fase, se asigna un valor inicial al contador. Este valor se utiliza en la primera fase de evaluación. En la fase de evaluación, si el resultado de la condición de evaluación es falso, el ciclo finalizará; si es verdadero, ejecutará las declaraciones dentro del ciclo, luego incrementará el contador y volverá a la fase de evaluación. El siguiente diagrama muestra el flujo de bucle for:
para diagrama de flujo de bucle
Figura 1 - Para el diagrama de flujo del circuito
Como ejemplo, el siguiente código es una cláusula simple para bucle escrita en C #. En este bucle, el contador se inicia en 0, la fase de evaluación es para verificar si el contador es menor que 10, y después de cada bucle, el contador se incrementa en 1:

Foreach Loop

Un bucle foreach es muy similar a un bucle for, excepto que no hay fase de evaluación. Esto se debe a que está recorriendo una colección de objetos y, para cada objeto de la colección, ejecuta una instrucción específica. Como ejemplo, tiene una lista de nombres y necesita recorrer estos nombres sin la necesidad de una fase de evaluación o usar cualquier contador (no un ciclo basado en índices).
Caso en cuestión, el siguiente código es una cláusula foreach loop que recorre una cadena ubicada en una lista de cadenas en C #:
  • Nota : Para obtener más información sobre los bucles for / foreach, consulte este artículo: w3schools.com - C # For Loop

SSIS Loop Containers

Después de describir los bucles y los bucles foreach, mostraremos cómo se implementan estas operaciones dentro de SSIS. Hay muchos métodos para implementar bucles dentro de SSIS dentro de diferentes ámbitos:
  • Flujo de control
    • SSIS para contenedor de bucle
    • SSIS Foreach Loop Container
    • Dentro de una tarea de script
  • Tarea de flujo de datos
    • Dentro de un componente de script
En esta sección, no nos centraremos en cómo implementar bucles utilizando secuencias de comandos en SSIS. En cambio, daremos una descripción general de los contenedores mencionados anteriormente.

SSIS para contenedor de bucle

SSIS For Loop Container tiene el mismo contexto de for loops, como mencionamos anteriormente. Tiene tres fases: inicialización, evaluación e incremento de contador. Pero, las declaraciones que se ejecutarán dentro de un contenedor de bucles For en SSIS tienen la forma de tareas SSIS (Ejecutar tarea SQL, tarea de secuencia de comandos, tarea de sistema de archivos, tarea de ejecución de proceso, etc.):
SSIS para la descripción del contenedor de bucle de la caja de herramientas
Figura 2: descripción de SSIS For Loop Container de la caja de herramientas
Cuando abrimos el editor SSIS For Loop Container, hay tres propiedades principales que debemos establecer:
  • InitExpression: ¿Cuál es la expresión de inicialización?
  • EvalExpression: ¿Cuál es la expresión de evaluación?
  • AssignExpression: ¿Cuál es la expresión incremental del contador?
Las variables deben agregarse dentro del paquete SSIS, y para usarlas, debe agregar el carácter @ como prefijo. Como ejemplo, si agregamos la variable @ [User :: Counter] , para implementar un bucle for similar a For (int i = 0; i <10; i ++) {} , debemos usar las siguientes expresiones:
  • InitExpression: @Counter = 0
  • EvalExpression: @Counter <10
  • AssignExpression: @Counter = @Counter + 1
SSIS para el editor de contenedor de bucles
Figura 3 - SSIS para el editor de contenedor de bucles
  • Nota : Para obtener más información sobre SSIS For Loop Container, consulte la siguiente documentación oficial: SSIS For Loop Container

SSIS Foreach Loop Container

El SSIS Foreach Loop Container es más complicado que el For Loop Container ya que tiene muchos casos de uso y requiere una configuración más compleja:
Descripción del contenedor de bucle foreach SSIS de la caja de herramientas
Figura 4: descripción de SSIS Foreach Loop Container de la caja de herramientas
Existen diferentes tipos de enumeradores en el SSIS Foreach Loop Container. Puede seleccionar el tipo de enumerador en la pestaña de recopilación dentro del formulario del editor de SSIS Foreach Loop Container:
  • Enumerador de elementos de Foreach: recorre un conjunto de elementos que se pueden definir manualmente en el editor de SSIS Foreach Loop Container
  • Enumerador de archivos Foreach: recorre los archivos dentro de un directorio específico
  • Enumerador de ADO de Foreach: recorrer las filas del archivo en un conjunto de registros ADO
  • Enumerador de conjunto de filas de esquema ADO.NET de Foreach: repita la información del esquema de un origen de datos específico (tablas en una base de datos)
  • Foreach desde el enumerador de variables: recorre los elementos almacenados dentro de una variable SSIS de tipo objeto (debe ser enumerable)
  • Enumerador de Forede NodeList: recorre un conjunto de resultados de una expresión de XML Path Language (XPath)
  • Enumerador de SMO de Foreach: bucle sobre objetos de objetos de administración de SQL Server (SMO), como servidores disponibles
  • Enumerador de archivos HDFS de Foreach: recorre los archivos ubicados dentro de un directorio del sistema de archivos distribuido de Hadoop
  • Foreach Azure Blob: recorre blobs en un contenedor de blobs en Azure Storage
  • Archivo ADLS de Foreach: repita los archivos en un directorio en Azure Data Lake Store
  • Archivo Foreach Data Lake Storage Gen2: repita los archivos en un directorio en Azure Data Lake Store Gen2
Selección del tipo de enumarator dentro de la página de la pestaña de recopilación del contenedor de bucles foreach SSIS
Figura 5: página de la pestaña de recopilación SSIS Foreach Loop Container
Cada enumerador tiene sus propias propiedades que debemos configurar.
Para capturar el elemento actual mientras se repite en una colección, debemos agregar un paquete SSIS y asignar esta variable al elemento dentro de la página de la pestaña de asignaciones de variables del Contenedor de bucle Foreach SSIS especificando el índice del elemento dentro de la fila actual y el nombre de la variable.
Página de la pestaña Asignaciones variables del contenedor de bucles foreach SSIS
Figura 6: página de la pestaña Asignaciones de variables del contenedor de bucles Foreach SSIS
  • Nota : Para obtener más información sobre SSIS Foreach Loop Container, consulte la documentación oficial: SSIS Foreach Loop Container

Obtener el número de iteración del bucle

Al usar el SSIS Foreach Loop Container, podemos obtener el elemento actual mediante asignaciones variables, pero no podemos conocer el número de iteración. Para hacer eso, debemos agregar una tarea de expresión o una tarea de script con una variable incremental. Para obtener más información, consulte la siguiente respuesta en Stackoverflow.com: Visualice el número de iteración del bucle foreach en SSIS

SSIS Foreach Loop Container vs. Para contenedor de bucle

Con esta descripción de ambos contenedores, puede ver que cada uno tiene su propio caso de uso. En esta sección, mencionaré algunos ejemplos del uso de cada contenedor.
Uno de los usos más eficientes de SSIS For Loop Container es cargar datos como fragmentos; Este enfoque se utiliza para minimizar la carga de memoria cuando se maneja un gran volumen de datos. Puede consultar nuestro artículo publicado anteriormente para obtener más información: Característica de FETCH OFFSET de SQL: Carga de grandes volúmenes de datos utilizando recursos limitados con SSIS .

SSIS Foreach Loop Container se usa más ampliamente que Fr Loop Container, ya que puede realizar acciones más populares, como recorrer los archivos dentro de un directorio o recorrer un conjunto de resultados Ejecutar tarea SQL. Los siguientes artículos contienen algunos ejemplos del uso de SSIS Foreach Loop Container:

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

Post Top Ad

Your Ad Spot

Páginas