SubField() se utiliza para extraer componentes de subcadenas de un campo de cadena principal, 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 omitido, se generará un registro completo para 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
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 los datos introducidos en text que divide la cadena en partes componentes.
field_no
El tercer argumento opcional es un entero que especifica cuál de las subcadenas de la cadena principal text se devolverá. Utilice el valor 1 para volver a la primera subcadena, 2 para volver a la segunda subcadena, etc.
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 sugerenciaSubField() se puede usar en lugar de utilizar combinaciones complejas de funciones como Len(), Right(), Left(), Mid() y otras funciones de cadena.
Ejemplos: Expresiones de scripts y gráficos que usan SubField
Ejemplos básicos
Ejemplo
Resultado
SubField(S, ';' ,2)
Devuelve 'cde' si S es 'abc;cde;efg'.
SubField(S, ';' ,1)
Devuelve una cadena vacía si S es una cadena vacía.
SubField(S, ';' ,1)
Devuelve una cadena vacía si S es ';'.
Supongamos que tiene una variable que contiene una ruta de archivo vMyPath,
Set vMyPath=\Users\ext_jrb\Documents\Qlik\Sense\Apps;.
En un gráfico de texto e imagen, puede agregar una medida como: SubField(vMyPath, '\',-3), lo cual da como resultado "Qlik", porque es la tercera subcadena desde el extremo derecho de la variable vMyPath.
Ejemplo de script 1
Script de carga
Cargue las siguientes expresiones de script y datos en el editor de carga de datos.
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;
Crear una visualización
Cree una visualización de tabla en una hoja de Qlik Sense con Name, FirstName y SurName como dimensiones.
Resultado
Name
FirstName
SurName
Dave Owen
Dave
Owen
Joe Tem
Joe
Tem
Explicación
La función SubField() extrae la primera subcadena de Name estableciendo el argumento field_no en 1. Dado que el valor de field_no es positivo, se sigue un orden de izquierda a derecha para extraer la subcadena. Una segunda llamada de función extrae la segunda subcadena configurando el argumento de field _no en -1, lo que extrae la subcadena siguiendo un orden de derecha a izquierda.
Ejemplo de script 2
Script de carga
Cargue las siguientes expresiones de script y datos en el editor de carga de datos.
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 '|');
Crear una visualización
Cree una visualización de tabla en una hoja de Qlik Sense con Instrument, Player y Projectcomo dimensiones.
Resultado
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
Explicación
Este ejemplo muestra cómo usar múltiples instancias de la función Subfield(), cada una con el parámetro field_no omitido, desde dentro de la misma sentencia LOAD crea productos cartesianos de todas las combinaciones. La opción DISTINCT sirve para evitar crear registros duplicados.
¿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.