Construindo expressões
Sobre a Building Expressions
As expressões são usadas no XM Discover para filtro seus dados e transformar campos de dados. Por exemplo, é possível usar expressões para alterar a formatação do campo de data, avaliar dados para registros vazios e realizar cálculos matemáticos.
As expressões podem conter 4 componentes:
- Constantes: Você pode usar números constantes, cadeias de texto e datas para realizar operações matemáticas e comparação.
- Campos: Você pode usar campos numéricos, de texto e de data disponíveis por meio de um conector de dados específico para realizar operações matemáticas e comparação nesses campos.
- Funções: Você pode usar funções para realizar transformações em seus campos e constantes.
- Operadores: Você pode usar operadores para realizar operações matemáticas e comparar seus campos e constantes.
Constantes
As constantes são números, cadeias de texto e datas que você pode usar para realizar operações matemáticas e comparações. Por exemplo, é possível usar uma data constante, como a data de lançamento da pesquisa anual de CX, para calcular a idade da resposta pesquisa um respondente.
Observações sobre o uso de constantes:
- As cadeias de texto são tratadas como sensíveis a maiúsculas e minúsculas. Use as funções UPPER ou LOWER como uma solução alternativa para a diferenciação de maiúsculas e minúsculas.
- As cadeias de texto e as datas devem ser colocadas entre aspas.
- Os números não precisam de aspas (um número entre aspas é tratado como texto).
Campos
Campos são os campos de dados disponíveis em seu conector de dados de entrada. Isso inclui campos numéricos, de cadeia de texto e de data, que você pode usar para realizar operações matemáticas e comparações. Por exemplo, se o seu conjunto de dados contiver um campo para a data de aniversário de um cliente, você poderá calcular a idade do cliente.
Para adicionar um campo, arraste-o da seção Fields (Campos ) para a caixa Expression (Expressão ).
Os tipos de campo são identificados com os ícones a seguir:
Funções
É possível usar as funções numéricas, de texto e de data listadas nesta seção.
Para adicionar uma função, arraste-a da seção Functions (Funções ) para a caixa Expression (Expressão ).
Os tipos de função são identificados com os ícones a seguir:
ABS
Retorna o valor absoluto de um número.
Sintaxe: ABS(número)
COALESCE
Retorna o primeiro valor não nulo em uma lista.
Sintaxe: COALESCE(valor1, valor2, valor3)
TETO
Retorna o valor arredondado de um número.
Sintaxe: CEILING(número)
CONCAT
Une várias cadeias de texto em uma só.
Sintaxe: CONCAT(“string 1”, “string 2”, “string 3”)
CONTÉM
Retorna true se uma cadeia de texto (“within text”) contiver outra cadeia de texto (“find text”). Caso contrário, retorna falso.
Sintaxe: CONTAINS(“within text”, “find text”)
CONVERT_TO_TIMEZONE
Converte data e hora de um zona horário para outro.
Sintaxe: CONVERT_TO_TIMEZONE(“date and time”, “time zona to convert from”, “time zona to convert to”)
Notas sobre a formatação de datas:
- Forneça os fusos horários usando seus nomes de banco de dados tz.
- Forneça a data e a hora em ISO 8601 ou como aaaa-mm-dd hh:mm:ss.
- Se a data e a hora forem fornecidas com informações de zona horário, elas serão ignoradas em favor do parâmetro “time zona to convert from”.
- A data convertida usa o formato ISO 8601. Use a função TODATE se você precisar alterar isso.
NÚMERO DE DATA
Converte um campo de data em um carimbo de data/hora Unix.
Sintaxe: DATETONUMBER(“date”)
DATATOTEXT
Converte um campo de data em uma string de data no formato solicitado.
Sintaxe: DATETOTEXT(“data”, “formato de data”)
DIA DA SEMANA
Retorna o dia da semana correspondente a uma data.
Sintaxe: DAYOFWEEK(“data”)
DYNAMICLOOKUP
Substitui os valores do campo usando uma tabela de pesquisa carregada dinamicamente. Os valores de pesquisa são obtidos do campo especificado no primeiro argumento (“nome do campo”).
Sintaxe: DYNAMICLOOKUP(“nome do campo”, “valor”)
ELEMENTOFARRAY
Extraia o enésimo valor de uma matriz e, em seguida, mapeie os valores da matriz para atributos no XM Discover.
Sintaxe: ELEMENTOFARRAY([“array element 1”, “array element 2”, “array element 3”], number)
Notas:
- Se a entrada não for uma matriz, a função gera um erro.
- Se o número for maior que o tamanho de uma matriz, a função retornará null. Os números em ordem crescente começam em 0.
CAMPO
Envolve nomes de campos que contêm espaços ou pontos.
Sintaxe: FIELD(“nome do campo”)
FIND
Localiza uma cadeia de texto (“find text”) dentro de outra cadeia de texto (“within text”) e retorna o número da posição inicial de “find text” a partir do primeiro caractere de “within text” (a partir de 1).
Permite especificar a ordem do caractere em “dentro do texto” na qual a pesquisa deve ser iniciada (a partir de 1). Se você omitir o order_number, ele será considerado 1.
Retorna -1 se “find text” não for encontrado em “within text”
Sintaxe: FIND(“find text”, “within text”, order_number)
FINDFIRST
Localiza a primeira ocorrência de uma cadeia de texto (“find text”) em outra cadeia de texto (“within text”) e retorna o número da posição inicial de “find text” a partir do primeiro caractere de “within text” (a partir de 1).
Sintaxe: FINDFIRST(“dentro do texto”, “encontrar texto”)
FINDLAST
Localiza a última ocorrência de uma cadeia de texto (“find text”) em outra cadeia de texto (“within text”) e retorna o número da posição inicial de “find text” a partir do primeiro caractere de “within text” (a partir de 1).
Sintaxe: FINDLAST(“dentro do texto”, “encontrar texto”)
PISO
Retorna o valor arredondado para baixo de um número.
Sintaxe: FLOOR(número)
GENERATE_ID
Gera uma ID exclusiva. Essa função não requer parâmetros adicionais.
Sintaxe: GENERATE_ID()
DIAS ENTRE
Retorna o número de dias entre duas datas.
Sintaxe: GETDAYSBETWEEN(“data inicial”, “data final”)
GETHOURSBETWEEN
Retorna o número de horas entre duas datas.
Sintaxe: GETHOURSBETWEEN(“data inicial”, “data final”)
GETMINUTESBETWEEN
Retorna o número de minutos entre duas datas.
Sintaxe: GETMINUTESBETWEEN(“data inicial”, “data final”)
Se
Retorna um valor se a declaração for verdadeira e outro valor se a declaração for falsa.
Sintaxe: IF(declaração, “valor se verdadeiro”, “valor se falso”)
ISBLANK
Retorna TRUE quando um campo está vazio e FALSE quando um campo não está vazio.
Sintaxe: ISBLANK(“nome do campo”)
JOINARRAY
Une uma matriz de itens em uma única string com um delimitador especificado.
Synax: JOINARRAY(array, delimiter, escape, skipNull, removeDuplicates)
Na sintaxe acima:
- array: array de cadeias de caracteres ou números a serem unidos.
- delimiter: caractere delimitador a ser usado ao unir a matriz.
- escape: se verdadeiro, preserva os elementos entre aspas.
- skipNull: se verdadeiro, ignora os elementos que são nulos.
- removeDuplicated: Se verdadeiro, removerá os elementos duplicar.
LEN
Retorna o número de letras em uma cadeia de texto.
Sintaxe: LEN(“texto”)
Sintaxe: LEN([“text1”, text2])
INFERIOR
Converte o texto em letras minúsculas.
Sintaxe: LOWER(“text”)
MD5HASH
Aplica o hash MD5 aos dados de entrada para gerar IDs exclusivos com base nesses dados.
Sintaxe: MD5HASH(“text”)
MID
Retorna um número específico de caracteres de uma cadeia de texto, começando na posição que você especificar.
A posição (order_number) começa em 1.
Sintaxe: MID(“text”, order_number, characters_number)
MOD
Retorna o restante quando um número é dividido por um divisor.
Sintaxe: MOD(número, divisor)
AGORA
Retorna a data e a hora atuais. Essa função não requer parâmetros adicionais.
Sintaxe: NOW()
NUMBERTODATE
Converte um carimbo de data/hora Unix em um campo de data. O carimbo de data/hora Unix é o número de milissegundos decorridos desde 1º de janeiro de 1970.
Sintaxe: NUMBERTODATE(number)
NUMBERTOTEXT
Converte um número em texto.
Sintaxe: NUMBERTOTEXT(número)
POW
Retorna o resultado de x elevado à potência de y.
Sintaxe: POW(x, y)
PROPERCASE
Coloca a primeira letra de uma cadeia de texto em maiúscula.
Sintaxe: PROPERCASE(“text”)
Exemplo: PROPERCASE(“practice makes perfect”) resolve para Practice makes perfect.
RANDOM
Retorna um número real aleatório entre 0 e 1. Essa função não requer parâmetros adicionais.
Sintaxe: RANDOM()
RANDOMBETWEEN
Retorna um número inteiro aleatório entre dois números.
Sintaxe: RANDOMBETWEEN(número mínimo, número máximo)
REMOVERHTMLTAGS
Remove tags HTML de uma string de texto.
Sintaxe: REMOVEHTMLTAGS(“text”)
SUBSTITUIR
Substitui parte de uma cadeia de texto (“texto antigo”) por uma cadeia de texto diferente (“novo texto”) um número definido de vezes (number_of_replacements) com base no número de ocorrências de “texto antigo” em “texto” (occurrence_number).
Sintaxe: REPLACE(“text”, “old text”, “new text”, occurrence_number, case_sensitivity, number_of_replacements)
REPLACEBYINDEX
Substitui parte de uma cadeia de texto (“texto antigo”) por uma cadeia de texto diferente (“texto novo”), com base no número de caracteres que você especificar.
A posição (order_number) começa em 1.
Sintaxe: REPLACE(“texto antigo”, número_de_ordem, número_de_caracteres, “texto novo”)
SUBSTITUIRPORREGEXP
Substitui valores de texto usando expressões regulares.
Sintaxe: REPLACEBYREGEXP(“text”, “expressão regular para correspondência de padrão”, “expressão regular para valor de substituição”)
REDONDA
Retorna o valor de um número arredondado para o número inteiro mais próximo.
Sintaxe: ROUND(number)
PESQUISAR
Localiza uma cadeia de texto (“find text”) dentro de outra cadeia de texto (“within text”) e retorna o número da posição inicial de “find text” a partir do primeiro caractere de “within text” (a partir de 1).
Permite especificar a ordem do caractere em “dentro do texto” na qual a pesquisa deve ser iniciada (a partir de 1). Se você omitir o order_number, ele será considerado 1.
Retorna -1 se “find text” não for encontrado em “within text”
Sintaxe: SEARCH(“find text”, “within text”, order_number)
DIVIDIR
Divide uma determinada string em uma matriz de substrings com base em um delimitador especificado. Essa função pode ser usada como parâmetro para as funções JOINARRAY ou ELEMENTOFARRAY, pois o valor de saída deve ser uma cadeia de caracteres.
Sintaxe: SPLIT(“string_to_split”, “_”)
SUBSTITUTO
Substitui o “texto antigo” pelo “texto novo” em uma cadeia de texto.
Permite especificar qual ocorrência do “texto antigo” você deseja substituir. Se você especificar occurrence_number, somente essa instância do “texto antigo” será substituída. Caso contrário, toda ocorrência de “texto antigo” no texto é alterada para “texto novo”
Sintaxe: SUBSTITUTE(“text”, “old text”, “new text”, occurrence_number)
SUBSTR
Retorna uma parte de uma cadeia de texto a partir do primeiro caractere da cadeia e até o número especificado de caracteres (a partir de 1).
Sintaxe: SUBSTR(“text”, order_number)
TITLECASE
Coloca a primeira letra de cada palavra em maiúscula em uma cadeia de texto.
Sintaxe: TITLECASE(“text”)
DATA DE TEXTO
Converte uma string de data em um campo de data no seguinte formato: YYYY-MM-DDThh:mm:ssZ.
Sintaxe: TEXTTODATE(“data”, “formato de data”)
NÚMERO DE TEXTTON
Converte texto em número.
Sintaxe: TEXTTONUMBER(text)
TRADUZIR
Traduz os dados de entrada.
Sintaxe: TRANSLATE (” código de idioma de origem”, ” código de idioma destino “, “texto”).
Observações:
- Essa função está disponível apenas para contas com credenciais API do Google Translate
- Para obter uma lista completa dos códigos de idioma compatíveis, consulte a documentação do Google Cloud Translation.
TRIMLEFT
Remove espaços da extremidade esquerda de uma cadeia de texto.
Sintaxe: TRIMLEFT(“text”)
TRIMRIGHT
Remove espaços da extremidade direita de uma cadeia de texto.
Sintaxe: TRIMRIGHT(“text”)
SUPERIOR
Converte o texto em letras maiúsculas.
Sintaxe: UPPER(“text”)
Operadores
Você pode usar os operadores aritméticos e comparação listados nas tabelas a seguir.
Operadores aritméticos
Operador | Descrição |
+ | Adicionar |
– | Subtrair ou negar |
* | Multiplicar |
/ | Dividir |
Por exemplo, a expressão a seguir retornará a média dos dois valores numéricos.
(CLASSIFICAÇÃO1 + CLASSIFICAÇÃO2) / 2
Operadores Comparação
Operador | Descrição |
== | Igual a |
> | Maior que |
< | Menor que |
>= | Maior ou igual a |
<= | Menor ou igual a |
!= | Diferente de |
Por exemplo, a expressão a seguir retornará “classificação ruim” quando RATING for menor ou igual a 3, e “classificação boa” quando RATING for maior que 3.
IF(RATING <= 3, “classificação ruim”, “classificação boa”)
Operadores lógicos
Use operadores lógicos para especificar várias condições ao usar a função IF ou filtros de trabalho.
Operador | Descrição |
e | Condição é verdadeira se todas as condições separadas por “e” forem verdadeiras. |
em | Condição será verdadeira se houver uma correspondência com qualquer um dos valores listados.
Sintaxe: in[“valor 1”, “valor 2”, “valor 3”] Qdica: use isso em vez de vários operadores “ou”.
|
ou | Condição será verdadeira se qualquer uma das condições separadas por “ou” for verdadeira. |
Por exemplo, a expressão a seguir retornará “Mediterranean” se o campo COUNTRY contiver qualquer um dos valores especificados. Caso contrário, ele retornará “Non-Metiterranean”
IF(LOWER(COUNTRY) in [“france”, “portugal”, “italy”, “spain”, “greece”, “malta”, “cyprus”], “Mediterranean”, “Non-Mediterranean”)
Dicas de sintaxe
Siga estas dicas para evitar expressões inválidas:
- Ao combinar várias funções em uma expressão, certifique-se de que o número de parênteses de abertura e fechamento seja igual.
Exemplo: IF(GETDAYSBETWEEN(feedback_date, response_date) > 3, “delayed”, “not delayed”).
- Para cada função usada na expressão, todos os argumentos necessários precisam estar presentes. Por exemplo, a função TODATE requer os argumentos de data e de formato de data para funcionar corretamente.
- Certifique-se de usar o tipo de dados correto suportado por uma função ou uma operação aritmética ou comparação. Por exemplo, a função ABS precisa de um número para funcionar corretamente e não funcionará em um campo de texto ou data.
- Se houver pontos (“.”) em sua expressão, envolva-os com a função FIELD e aspas (simples ou duplas). Por exemplo, se você tiver um campo chamado “agentParticipants.0.agentLoginName”, veja como envolvê-lo em uma possível transformação:
IF(CONTAINS(LOWER(FIELD(“agentParticipants.0.agentLoginName”)), “bot”), “YES”, “NO”).