Criando expressões
Sobre a criação de expressões
As expressões são usadas no XM Discover para filtrar seus dados e transformar campos de dados. Por exemplo, você pode usar expressões para modificar a formatação do campo de data, avaliar dados para registros vazios e executar cálculos matemáticos.
As expressões podem conter 4 componentes:
- Constantes: você pode usar números constantes, strings de texto e datas para executar operações matemáticas e de 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 executar operações matemáticas e de comparação nesses campos.
- Funções: você pode utilizar funções para executar transformações em seus campos e constantes.
- Operadores: você pode usar operadores para executar 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 utilizar para executar operações matemáticas e comparações. Por exemplo, você pode usar uma data constante, como a data em que lançou sua pesquisa CX anual, para calcular a idade da resposta de um respondente à pesquisa.
Notas sobre a utilização de constantes:
- As cadeias de texto são tratadas como dependentes de maiúsculas/minúsculas. Use as funções SUPERIOR ou INFERIOR como solução alternativa para diferenciar maiúsculas de minúsculas.
- As strings 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
Os campos são os campos de dados disponíveis no seu conector de dados de entrada. Isso inclui campos numéricos, de cadeia de texto e de data, que você pode utilizar para executar operações matemáticas e comparações. Por exemplo, se o seu conjunto de dados contiver um campo para o aniversário de um cliente, você pode calcular a antiguidade do cliente.
Para adicionar um campo, arraste-o da seção Campos para a caixa Expressão.
Os tipos de campo são identificados com os seguintes ícones:
Funções
Você pode utilizar funções numéricas, de texto e de data listadas nesta seção.
Para adicionar uma função, arraste-a da seção Funções para a caixa Expressão.
Os tipos de função são identificados com os seguintes ícones:
ABS
Retorna o valor absoluto de um número.
Sintaxe: ABS(number)
COALESÇA
Retorna o primeiro valor não nulo em uma lista.
Sintaxe: COALESCE(valor1, valor2, valor3)
CÉLULO
Retorna o valor arredondado para cima de um número.
Sintaxe: CEILING(number)
CONCAT
Junta várias strings de texto em uma.
Sintaxe: CONCAT(“string 1”, “string 2”, “string 3”)
CONTÉM
Retorna verdadeiro se uma string de texto (“dentro de texto”) contiver outra string de texto (“find text”). Caso contrário, retorna false.
Sintaxe: CONTAINS(“inside text”, “find text”)
CONVERT_TO_TIMEZONE
Converte a data e a hora de um fuso horário em outro.
Sintaxe: CONVERT_TO_TIMEZONE(“data e hora”, “fuso horário para converter de”, “fuso horário para converter em”)
Notas sobre formatação de data:
- Forneça os fusos horários usando seus nomes de banco de dados tz.
- Forneça a data e a hora na ISO 8601 ou como aaaa-mm-dd hh:mm:ss.
- Se a data e a hora forem fornecidas com informações de fuso horário, ela é ignorada em favor do parâmetro “fuso horário de onde converter”.
- A data convertida utiliza o formato ISO 8601. Use a função TODATE se precisar modificá-la.
DATETONUMBER
Converte um campo de data em uma marca de horário do Unix.
Sintaxe: DATETONUMBER(“date”)
DATETOTEXT
Converte um campo de data em uma string de data no formato solicitado.
Sintaxe: DATETOTEXT(“date”, “date format”)
DAYOFWEEK
Retorna o dia da semana correspondente a uma data.
Sintaxe: DAYOFWEEK(“date”)
DYNAMICLOOKUP
Substitui os valores do campo usando uma tabela de pesquisa carregada dinamicamente. Os valores de pesquisa são retirados do campo especificado no primeiro argumento (“nome do campo”).
Sintaxe: DYNAMICLOOKUP(“field name”, “value”)
ELEMENTOFARRAIA
Extraia o enésimo valor de uma matriz e mapeie valores de 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 emite um erro.
- Se o número for maior que o tamanho de uma matriz, a função retornará nulo. Os números em ordem crescente começam em 0.
CAMPO
Quebra os nomes de campo que contêm espaços ou pontos.
Sintaxe: FIELD(“field name”)
ENCONTRAR
Localiza uma string de texto (“find text”) dentro de outra string de texto (“inside text”) e retorna o número da posição inicial de “find text” do primeiro caractere de “inside text” (a partir de 1).
Permite especificar a ordem do caractere em “dentro de texto” em que iniciar a pesquisa (a partir de 1). Se você omitir order_number, ele será assumido como 1.
Retorna -1 se “localizar texto” não for encontrado em “dentro do texto”.
Sintaxe: FIND(“find text”, “inside text”, order_number)
FINDFIRST
Localiza a primeira ocorrência de uma string de texto (“find text”) dentro de outra string de texto (“inside text”) e retorna o número da posição inicial de “find text” do primeiro caractere de “inside text” (a partir de 1).
Sintaxe: FINDFIRST(“inside text”, “find text”)
FINDLAST
Localiza a última ocorrência de uma string de texto (“find text”) dentro de outra string de texto (“inside text”) e retorna o número da posição inicial de “find text” do primeiro caractere de “inside text” (a partir de 1).
Sintaxe: FINDLAST(“inside text”, “find text”)
PISO
Retorna o valor arredondado para baixo de um número.
Sintaxe: FLOOR(number)
GENERATE_ID
Gera um ID único. Esta função não necessita de parâmetros adicionais.
Sintaxe: GENERATE_ID()
GETDAYSBETWEEN
Retorna o número de dias entre duas datas.
Sintaxe: GETDAYSBETWEEN(“data de início”, “data de término”)
GETHOURSBETWEEN
Retorna o número de horas entre duas datas.
Sintaxe: GETHOURSBETWEEN(“data de início”, “data de término”)
GETMINUTESBETWEEN
Retorna o número de minutos entre duas datas.
Sintaxe: GETMINUTESBETWEEN(“data de início”, “data de término”)
Se
Retorna um valor se a instrução for verdadeira e outro valor se a instrução for falsa.
Sintaxe: IF(instrução, “value if true”, “value if false”)
ISBLANK
Retorna TRUE quando um campo está vazio e FALSE quando um campo não está vazio.
Sintaxe: ISBLANK(“field name”)
JOINARRAY
Joins an array of items into a single string with a specified delimiter.
Synax: JOINARRAY(array, delimiter, escape, skipNull, removeDuplicates)
In the above syntax:
- array: array of strings or numbers to join.
- delimiter: delimiter character to use when joining the array.
- escape: if true, preserve quoted elements.
- skipNull: if true, skip elements that are null.
- removeDuplicated: If true, remove duplicate elements.
LEN
Retorna o número de letras em uma string de texto.
Sintaxe: LEN(“text”)
Syntax: LEN([“text1”, text2])
INFERIOR
Converte o texto em letras minúsculas.
Sintaxe: LOWER(“text”)
MD5HASH
Aplica hash MD5 aos dados de entrada para gerar IDs exclusivos com base nesses dados.
Sintaxe: MD5HASH(“text”)
IDM
Retorna um número específico de caracteres de uma string de texto, começando na posição especificada.
A posição (order_number) começa a partir de 1.
Sintaxe: MID(“text”, order_number, Characters_number)
MOD
Retorna o resto quando um número é dividido por um divisor.
Sintaxe: MOD(número, divisor)
AGORA
Retorna a data e hora atuais. Esta função não necessita de parâmetros adicionais.
Sintaxe: NOW()
NUMBERTODATE
Converte um timestamp do Unix em um campo de data. O timestamp do 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(number)
POW
Retorna o resultado de x à potência de y.
Sintaxe: POW(x, y)
PROPERCASO
Coloca em maiúscula a primeira letra de uma cadeia de texto.
Sintaxe: PROPERCASE(“text”)
Exemplo: PROPERCASE(“a prática faz perfeito”) resolve para a prática faz perfeito.
RANDOM
Retorna um número real aleatório entre 0 e 1. Esta função não necessita de 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)
REMOVEHTMLTAGS
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ência de “texto antigo” em “text” (ocorrrence_number).
Sintaxe: REPLACE(“text”, “old text”, “new text”, ocorrrence_number, case_sensível, number_of_replacements)
REPLACEBYINDEX
Substitui parte de uma cadeia de texto (“texto antigo”) por uma cadeia de texto diferente (“novo texto”), com base no número de caracteres que você indica.
A posição (order_number) começa a partir de 1.
Sintaxe: REPLACE(“old text”, order_number, Characters_number, “new text”)
REPLACEBYREGEXP
Substitui valores de texto usando expressões regulares.
Sintaxe: REPLACEBYREGEXP(“text”, “expressão regular para correspondência de padrões”, “expressão regular para valor de substituição”)
ARREDONDADO
Retorna o valor de um número arredondado para o inteiro imediatamente inferior.
Sintaxe: ROUND(number)
PESQUISAR
Localiza uma string de texto (“find text”) dentro de outra string de texto (“inside text”) e retorna o número da posição inicial de “find text” do primeiro caractere de “inside text” (a partir de 1).
Permite especificar a ordem do caractere em “dentro de texto” em que iniciar a pesquisa (a partir de 1). Se você omitir order_number, ele será assumido como 1.
Retorna -1 se “localizar texto” não for encontrado em “dentro do texto”.
Sintaxe: SEARCH(“find text”, “inside text”, order_number)
SPLIT
Splits a given string into an array of substrings based on a specified delimiter. This function can be used as a parameter for JOINARRAY or ELEMENTOFARRAY functions since the output value must be a string.
Syntax: SPLIT(“string_to_split”, “_”)
SUBSTITUIR
Substitui “texto antigo” por “novo texto” em uma string de texto.
Permite especificar qual ocorrência de “texto antigo” você deseja substituir. Se você indicar ocorrrence_number, só é substituída a instância de “texto antigo”. Caso contrário, cada ocorrência de “texto antigo” no texto é alterada para “novo texto”.
Sintaxe: SUBSTITUTE(“text”, “old text”, “new text”, ocorrrence_number)
SUBSTR
Retorna uma parte de uma cadeia de texto a partir do primeiro caractere da cadeia e até o número indicado de caracteres (começando a partir de 1).
Sintaxe: SUBSTR(“text”, order_number)
TITLECASE
Coloca em maiúscula a primeira letra de cada palavra em uma string de texto.
Sintaxe: TITLECASE(“text”)
TEXTTODATE
Converte uma string de data em um campo de data no seguinte formato: AAAA-MM-DDThh:mm:ssZ.
Sintaxe: TEXTTODATE(“date”, “date format”)
TEXTTONUMBER
Converte o texto em número.
Sintaxe: TEXTTONUMBER(text)
TRADUZIR
Converte dados de entrada.
Sintaxe: TRANSLATE (“código de idioma de origem”, “código de idioma de destino”, “texto”).
Notas:
- Esta função só está disponível para contas com credenciais de API do Google Translate
- Para obter uma lista completa dos códigos de idioma suportados, consulte a documentação do Google Cloud Translation.
TRIMLEFT
Remove espaços do lado esquerdo de uma string de texto.
Sintaxe: TRIMLEFT(“text”)
TRIMRIGHT
Remove espaços do lado direito de uma string de texto.
Sintaxe: TRIMRIGHT(“text”)
SUPERIOR
Converte o texto em maiúsculas.
Sintaxe: UPPER(“text”)
Operadores
Você pode utilizar operadores aritméticos e de 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.
(RATING1 + RATING2) / 2
Operadores de 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 incorreta” quando RATING for menor ou igual a 3 e “boa classificação” quando RATING for maior que 3.
IF(RATING <= 3, “má avaliação”, “boa avaliação”)
Operadores lógicos
Use operadores lógicos para indicar várias condições ao usar a função IF ou filtros de job.
Operador | Descrição |
e | A condição é verdadeira se todas as condições separadas por “e” forem verdadeiras. |
em | A condição é verdadeira se existir uma correspondência com qualquer um dos valores listados.
Sintaxe: in[“value 1”, “value 2”, “value 3”] Qdica: use isso em vez de vários operadores “ou”.
|
ou | A condição é verdadeira se qualquer uma das condições separadas por “ou” for verdadeira. |
Por exemplo, a expressão a seguir retornará “Mediterrâneo” 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 corresponde.
Exemplo: IF(GETDAYSBETWEEN(feedback_date, response_date) > 3, “atraso”, “não atrasado”).
- Para cada função usada na expressão, todos os argumentos necessários precisam estar presentes. Por exemplo, a função TODATE requer que os argumentos de formato de data e data funcionem corretamente.
- Certifique-se de usar o tipo de dados correto suportado por uma função ou uma operação aritmética ou de 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”, aqui está como você o envolve em uma potencial transformação:
IF(CONTAINS(LOWER(FIELD(“agentParticipants.0.agentLoginName”)), “bot”),”YES”, “NO”).