Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hola, necesitaría saber como puedo hacer para extraer un fragmento de un excel.
Como ejemplo en la siguiente tabla, solo debo extraer la información entre las Filas "TITULO 2" y "TITULO 3"
La dificultad esta en que la cantidad de filas anteriores son dinámicas y no puedo calcular con un numero fijo.
Header 1 | Header 2 | Header 3 |
---|---|---|
TITULO 1 | ||
CAMPO A | CAMPO B | CAMPO C |
1231 | 3234 | 12312 |
12321 | 312312 | 123123 |
TITULO 2 | ||
CAMPO A | CAMPO B | CAMPO C |
234234 | 2323134 | 23423 |
234234 | 234234 | 234234 |
2342342 | 23423 | 234234 |
TITULO 3 | ||
CAMPO A | CAMPO B | CAMPO C |
2344546 | 4564564 | 234232 |
Muchas Gracias.
Saludos
este script te puede ayudar
Temp:
LOAD A,
B,
C
FROM
Libro*.xlsx
(ooxml, no labels, table is Hoja1)
;
Temp2:
load
*,
if(WildMatch(A,'*TITULO*'),
if(WildMatch(A,'*TITULO 2*'),1,0),Peek(RowSeq)) as RowSeq
Resident Temp;
Final:
NoConcatenate
load
*
Resident Temp2
Where RowSeq = 1;
drop tables Temp,Temp2;
si asi se llaman los valores que quieren identificar puedes usar wildmatch y peek para sacar las lineas que necesitas
load
*
Where RowSeq = 1;
load
*,
if(WildMatch([Header 1],'*TITULO*'),
if(WildMatch([Header 1],'*TITULO 2*'),1,0),Peek(RowSeq)) as RowSeq;
load * Inline
[Header 1 Header 2 Header 3
TITULO 1
CAMPO A CAMPO B CAMPO C
1231 3234 12312
12321 312312 123123
TITULO 2
CAMPO A CAMPO B CAMPO C
234234 2323134 23423
234234 234234 234234
2342342 23423 234234
TITULO 3
CAMPO A CAMPO B CAMPO C
2344546 4564564 234232]
(delimiter is ' ' );
Muchas gracias Ramon por la respuesta, pero no termino de comprender como funciona.
En mi caso levanto esa tabla de muchos excel, hoy logro traer toda la información, pero no logro discriminar solo la info entre "titulo 2" y "titulo 3"
Este es mi código, como podría aplicar tu explicación?
Gracias, Saludos
Directory;
PENDIENTES_TEMP:
LOAD Distinct
CAMPOA,
CAMPOB,
CAMPOC
FROM
[..\Fuentes\*.xls]
(biff, embedded labels, header is 3 lines, table is Hoja1$)
WHERE(not IsNull(CAMPOB)
And not IsNull(CAMPOC) );
Hola Federico:
En el editor de script tienes un asistente para importar ficheros planos, seleccionas el tipo excel correspondiente, pulsas siguiente y pulsas el botón 'Habilitar Paso de Transformación'
En la nueva ventana selecciona 'Eliminar Condicional' e introduce la información adecuada para trocear tu archivo,
Espero que te sirva de ayuda
Joaquín
Gracias Joaquin por la cooperación, pero no me sirve el asistente, ya que en mi caso cargo muchos archivos excel y ese fragmento varia de fila según la cantidad de registros que tenga el archivo.
Por eso necesito un script de carga dinámico que pueda identificar donde comienza y termina ese fragmento.
Saludos
Federico, tienes un botón de 'eliminar condicional' ... eso elimina partes del contenido en base a reglas como por ejemplo 'Columna A' = 'Título'.
No solo elimina la Fila 7
Estuve intentando seguir tu recomendación, pero no logro entender como se configuraría un condicional para un rango.
Dejo 2 excel de demo con el qvw de carga para ver si me pueden ayudar.
Desde ya muchas gracias
este script te puede ayudar
Temp:
LOAD A,
B,
C
FROM
Libro*.xlsx
(ooxml, no labels, table is Hoja1)
;
Temp2:
load
*,
if(WildMatch(A,'*TITULO*'),
if(WildMatch(A,'*TITULO 2*'),1,0),Peek(RowSeq)) as RowSeq
Resident Temp;
Final:
NoConcatenate
load
*
Resident Temp2
Where RowSeq = 1;
drop tables Temp,Temp2;
Federico, aquí tienes tu aplicación modificada
Hola Federico:
Cuando pulsas 'Eliminar Condicional' dentro de 'Habilitar Pasos de Transformación' te sale una nueva ventana; mientras vayas creando condiciones con 'Añadir' te crea una condición de eliminación 'AND' cada vez que pulsas 'Aceptar' te crea una condición de eliminación 'OR'
Espero haber aclarado tus dudas respecto a importar ficheros excel debidamente depurados.
Saludos
Joaquín