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:
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.
|
Ejemplos y resultados:
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;
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 '|');
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 '|');
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 |