# SubField – função de script e gráfico

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.<br><br><ul> <li>Se <span>field_no</span> for um valor positivo, as subcadeias serão extraídas da esquerda para a direita.</li> <li>Se <span>field_no</span> for um valor negativo, as subcadeias serão extraídas da direita para a esquerda.</li> </ul> |

Nota de dica SubField() pode ser usado em vez de combinações complexas de funções, tais como Len(), Right(), Left(), Mid() e outras funções de string.

Exemplos: expressões de gráfico

| Exemplo | Resultado |
| --- | --- |
| `SubField(S,   ';' ,2)` | Retorna 'cde' se S for 'abc;cde;efg'. |
| `SubField(S,   ';' ,1)` | Retorna uma string vazia quando S é uma string vazia. |
| `SubField(S,   ';' ,1)` | Retorna uma string vazia se S for ';'. |
| Imagine que você tem uma variável com o nome de caminho vMyPath,<br><br>`Set vMyPath=\Users\ext_jrb\Documents\Qlik\Sense\Apps;`. | Em um gráfico de texto e imagem, é possível adicionar uma medida como:<br>`SubField(vMyPath, '\',-3``)`, que resulta em 'Qlik', porque é a terceira substring a contar da extremidade direita da variável vMyPath. |

## Exemplos: expressões de script e de gráfico usando SubField

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/SubField.htm)

#### Exemplos - expressões de script e gráfico

### Exemplos básicos

| Exemplo | Resultado |
| --- | --- |
| `SubField(S,   ';' ,2)` | Retorna 'cde' se S for 'abc;cde;efg'. |
| `SubField(S,   ';' ,1)` | Retorna uma string vazia quando S é uma string vazia. |
| `SubField(S,   ';' ,1)` | Retorna uma string vazia se S for ';'. |
| Imagine que você tem uma variável com o nome de caminho vMyPath,<br><br>`Set vMyPath=\Users\ext_jrb\Documents\Qlik\Sense\Apps;`. | Em um gráfico de texto e imagem, é possível adicionar uma medida como:<br>`SubField(vMyPath, '\',-3``)`, que resulta em 'Qlik', porque é a terceira substring a contar da extremidade direita da variável vMyPath. |

### Exemplo de script 1

#### Script de carregamento

Carregue as seguintes expressões de script e dados no editor de carregamento de dados.

```
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;
```

#### Criar uma visualização

Crie uma visualização de tabela em uma Qlik Sense do Qlik Cloud com Name, FirstName e SurName como dimensões

#### Resultado

| Name | FirstName | SurName |
| --- | --- | --- |
| Dave Owen | Dave | Owen |
| Joe Tem | Joe | Tem |

#### Explicação

A função SubField() extrai a primeira substring de Name definindo o argumento field\_no como 1. Como o valor de field\_no é positivo, uma ordem da esquerda para a direita é seguida para extrair a subtring. Uma segunda chamada de função extrai a segunda substring definindo o argumento field\_no como -1, que extrai a substring seguindo uma ordem da direita para a esquerda.

### Exemplo de script 2

#### Script de carregamento

Carregue as seguintes expressões de script e dados no editor de carregamento de dados.

```
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 '|');
```

#### Criar uma visualização

Crie uma visualização de tabela em uma pasta do Qlik Sense com Instrument, Player e Project como dimensões.

#### 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 |

#### Explicação

Esse exemplo mostra como usar várias instâncias da função Subfield(), cada uma com o parâmetro field\_no deixado de fora, a partir do mesmo comando LOAD, cria produtos Cartesianos de todas as combinações. A opção DISTINCT é usada para evitar a criação de registros duplicados.