Saltar al contenido principal

SubField - función de script y de gráfico

Subfield() se utiliza para extraer componentes de una subcadena de un campo de cadena superior, donde los campos de registro originales constan de dos o más partes separadas por un delimitador.

La función Subfield() debe utilizarse, por ejemplo, para extraer el nombre y apellido de una lista de registros que contienen nombres completos, las partes que componen el nombre de una ruta, o para extraer datos de tablas separadas por comas.

Si utiliza la función Subfield() en una sentencia LOAD con el parámetro opcional field_no excluido, se generará un registro completo por cada subcadena. Si se cargan varios campos utilizando Subfield() se crean los productos cartesianos de todas las combinaciones.

Sintaxis:  

SubField(text, delimiter[, field_no ])

Tipo de datos que devuelve: cadena

Argumentos:  

Argumentos de SubField
Argumento Descripción
text La cadena original. Puede ser un texto escrito directamente en el código, una variable, una expansión de signo dólar, u otra expresión.
delimiter Un carácter dentro de la entrada text que divide la cadena en partes componentes.
field_no

El tercer parámetro opcional es un entero que especifica cuál de las subcadenas de la cadena padre text debe devolverse.

  • Si field_no es un valor positivo, las subcadenas se extraen de izquierda a derecha.
  • Si field_no es un valor negativo, las subcadenas se extraen de derecha a izquierda.
Nota de sugerencia SubField() puede utilizarse en lugar de utilizar combinaciones complejas de funciones como Len(), Right(), Left(), Mid() y otras funciones de cadenas.

Ejemplos y resultados:  

Ejemplos 1-3
Ejemplo Resultado
SubField('abc;cde;efg', ';', 2) Devuelve 'cde'
SubField('', ';', 1) Devuelve NULL
SubField(';', ';', 1) Devuelve una cadena vacía

Añada el script de ejemplo a su documento y ejecútelo. A continuación, añada como mínimo los campos de la columna de resultados a una hoja de su documento para ver el resultado.

FullName:

LOAD * inline [

Name

'Dave Owen'

'Joe Tem'

];

 

SepNames:

Load Name,

SubField(Name, ' ',1) as FirstName,

SubField(Name, ' ',-1) as Surname

Resident FullName;

Drop Table FullName;

Ejemplo 4
Name FirstName Surname
Dave Owen Dave Owen
Joe Tem Joe Tem

Suponga que tiene una variable que contiene un nombre de ruta vMyPath,

Set vMyPath=\Users\ext_jrb\Documents\Qlik\Sense\Apps;.

En un gráfico de texto e imagen puede añadir una medida, como por ejemplo:
SubField(vMyPath, '\',-3), que da como resultado 'Qlik', porque es la tercera subcadena desde el extremo derecho de la variable vMyPath.

Este ejemplo muestra cómo se crean múltiples filas a partir de una única instancia de Subfield().

Añada el script de ejemplo a su documento y ejecútelo. A continuación, añada como mínimo los campos de la columna de resultados a una hoja de su documento para ver el resultado.

LOAD DISTINCT

Player,

SubField(Project,',') as Project;

 

Load * inline [

Player|Project

Neil|Music,OST

Jo|Music

Mike|Music,OST,Video

] (delimiter is '|');

Ejemplo 5
Player Project
Neil Music
Neil OST
Jo Music
Mike Music
Mike OST
Mike Video

Este ejemplo muestra cómo el uso de varias instancias de la función Subfield(), cada una con el parámetro field_no omitido, desde la misma sentencia LOAD crea productos Cartesianos de todas las combinaciones. La opción DISTINCT se utiliza para evitar la creación de registros duplicados.

Añada el script de ejemplo a su documento y ejecútelo. A continuación, añada como mínimo los campos de la columna de resultados a una hoja de su documento para ver el resultado.

LOAD DISTINCT

Instrument,

SubField(Player,',') as Player,

SubField(Project,',') as Project;

 

Load * inline [

Instrument|Player|Project

Guitar|Neil,Mike|Music,Video

Guitar|Neil|Music,OST

Synth|Neil,Jen|Music,Video,OST

Synth|Jo|Music

Guitar|Neil,Mike|Music,OST

] (delimiter is '|');

Ejemplo 6
Instrument Player Project
Guitar Mike Music
Guitar Mike Video
Guitar Mike OST
Guitar Neil Music
Guitar Neil Video
Guitar Neil OST
Synth Jen Music
Synth Jen Video
Synth Jen OST
Synth Jo Music
Synth Neil Music
Synth Neil Video
Synth Neil OST

¿Esta página le ha sido útil?

No dude en indicarnos en qué podemos mejorar si encuentra algún problema en esta página o su contenido, como, por ejemplo, errores tipográficos, pasos que falta o errores técnicos.

Únase al Programa de modernización de la analítica

Remove banner from view

Modernícese sin comprometer sus valiosas aplicaciones de QlikView con el Programa de modernización de la analítica. Haga clic aquí para obtener más información o contactar con nosotros: ampquestions@qlik.com