SubField() é usado para extrair componentes de substring a partir de um campo primário de string, em que os campos de registro originais consistem em duas ou mais partes separadas por um separador.
A função Subfield() pode ser usada, por exemplo, para extrair o primeiro nome e sobrenome de uma lista de registros que consiste em nomes completos, partes do componente de um nome de caminho ou para extrair dados de tabelas separadas por vírgulas.
Se você usar a função Subfield() em um comando de LOAD com o parâmetro field_no opcional deixado de fora, um registro completo será gerado para cada substring. Se vários campos forem carregados usando Subfield(), os produtos cartesianos de todas as combinações serão criados.
Sintaxe:
SubField(text,
delimiter[, field_no ])
Tipo de dados de retorno: caractere
Argumentos:
Argumentos
Argumento
Descrição
text
A string original. Isso pode ser um texto codificado, uma variável, uma expansão de sinal de dólar ou outra expressão.
delimiter
Um caractere dentro do text de entrada que divide a string em partes de componente.
field_no
O terceiro argumento opcional é um inteiro que especifica qual substring do text da string primária será retornado. Use o valor 1 para retornar a primeira subcadeia, 2 para retornar a segunda subcadeia, e assim por diante.
Se field_no for um valor positivo, as subcadeias serão extraídas da esquerda para a direita.
Se field_no for um valor negativo, as subcadeias serão extraídas da direita para a esquerda.
Nota de dicaSubField() pode ser usado em vez de combinações complexas de funções, tais como Len(), Right(), Left(), Mid() e outras funções de caracteres.
Examples: Script and chart expressions using SubField
Basic examples
Example
Result
SubField(S, ';' ,2)
Returns 'cde' if S is 'abc;cde;efg'.
SubField(S, ';' ,1)
Returns an empty string if S is an empty string.
SubField(S, ';' ,1)
Returns an empty string if S is ';'.
Suppose you have a variable that holds a path name vMyPath,
Set vMyPath=\Users\ext_jrb\Documents\Qlik\Sense\Apps;.
In a text & image chart, you can add a measure such as: SubField(vMyPath, '\',-3), which results in 'Qlik', because it is the substring third from the right-hand end of the variable vMyPath.
Script example 1
Load script
Load the following script expressions and data in the data load editor.
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;
Create a visualization
Create a table visualization in a Qlik Sensesheet with Name, FirstName, and SurName as dimensions.
Result
Name
FirstName
SurName
Dave Owen
Dave
Owen
Joe Tem
Joe
Tem
Explanation
The SubField() function extracts the first substring of Name by setting the field_no argument to 1. Since the value of field_no is positive, a left to right order is followed for extracting the subtring. A second function call extracts the second substring by setting the field_no argument to -1, which extracts the substring following a right to left order.
Script example 2
Load script
Load the following script expressions and data in the data load editor.
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 '|');
Create a visualization
Create a table visualization in a Qlik Sense sheet with Instrument, Player, and Project as dimensions.
Result
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
Explanation
This example shows how using multiple instances of the Subfield() function, each with the field_no parameter left out, from within the same LOAD statement creates Cartesian products of all combinations. The DISTINCT option is used to avoid creating duplicate records.
Esta página ajudou?
Se você encontrar algum problema com esta página ou seu conteúdo - um erro de digitação, uma etapa ausente ou um erro técnico - informe-nos como podemos melhorar!