length ejemplo dt_str column code_page ssis

ejemplo - Concatenar columnas usando columna derivada en ssis



ejemplo derived column ssis (2)

Esto debería funcionar:

(DT_STR,50,1252)((Column1 == "" ? "" : Column1 + "|") + (Column2 == "" ? "" : Column2 + "|") + (Column3 == "" ? "" : Column3 + "|") + (Column4 == "" ? "" : Column4))

Básicamente, debe verificar si hay un valor vacío en cada columna y concatenar con cadena vacía o el contenido de la columna, y un separador opcional según la ubicación de la columna.

Lo que intento lograr es la Column 5 :

Column 1 Columns 2 Column 3 Column 4 Column 5 A B D A|B|D

Utilicé una columna derivada:

(DT_STR,50,1252)([A] + "|" + [B] + "|" + [C] + "|" + [D])

Pero terminé con:

Column 1 Columns 2 Column 3 Column 4 Column 5 A B D A|B||D

Estoy luchando por encontrar la solución correcta.


Su problema es que tiene una columna de datos vacía y no ha intentado probarla o manejarla en su concatenación.

Si sabes que solo tendrás una columna vacía en una fila, la siguiente expresión corregirá. Simplemente agrega una llamada REPLACE a la cadena resultante para hacer que los tubos dobles formen una sola tubería.

(DT_STR,50,1252)REPLACE(([Column 1] + "|" + [Column 2] + "|" + [Column 3] + "|" + [Column 4]),"||","|")

De lo contrario, deberá verificar si la columna tiene un valor y solo entonces agregará el delimitador. Eso daría lugar a una expresión como la siguiente

(DT_STR,50,1252)(([Column 1] + ((LEN([Column 1]) == 0) ? "" : "|") + [Column 2] + ((LEN([Column 2]) == 0) ? "" : "|") + [Column 3] + ((LEN([Column 3]) == 0) ? "" : "|") + [Column 4]))

Teniendo en cuenta los siguientes datos de muestra

SELECT ''A'' AS [Column 1] , ''B'' AS [Column 2] , '''' AS [Column 3] , ''D'' AS [Column 4] UNION ALL SELECT ''A'' AS [Column 1] , '''' AS [Column 2] , '''' AS [Column 3] , ''D'' AS [Column 4] UNION ALL SELECT ''A'' AS [Column 1] , '''' AS [Column 2] , '''' AS [Column 3] , '''' AS [Column 4] UNION ALL SELECT '''' AS [Column 1] , '''' AS [Column 2] , '''' AS [Column 3] , ''D'' AS [Column 4];

Generado los siguientes resultados

En este punto, probablemente omita la columna derivada y utilice un Componente de script para generar los datos concatenados. Expression''s that scroll son desafíos de mantenimiento. Además, los scripts anteriores no tienen en cuenta los NULL.