Campo da função

  • Versão de lançamento: Yokohama
  • Atualizado 30 de jan. de 2025
  • 11 min. de leitura
  • Crie campos de função e scripts na Now Platform para executar transformações e cálculos comuns de banco de dados.

    Campos regulares armazenam um valor no banco de dados. Em vez de armazenar dados, um campo de função exibe os resultados de uma consulta ao banco de dados. Os campos de função não têm uma coluna de banco de dados associada. Em vez disso, os campos de função geram um valor com base em cálculos simples de outros campos e constantes. Eles podem ser usados como qualquer outro campo no sistema: em formulários, listas, condições de consulta, relatórios e assim por diante.

    Aviso:
    Um campo de função que faz referência a outro campo de função na função resultará em um erro. Os campos de função não contêm dados ou são avaliados em tempo de execução.

    Caso de uso

    Você deseja identificar todos os incidentes com uma descrição resumida provavelmente inútil de menos de 10 caracteres.

    Em vez de consultar todos os registros para determinar qual registro atende a determinados critérios, crie um campo de função ou script de função que recupere somente os registros que atendem aos critérios.

    Para um cálculo simples, é melhor usar um campo de função ou script de função em vez de armazenar um valor calculado. O valor é sempre calculado na recuperação. Outro benefício do uso de campos de função é que o servidor de banco de dados executa a transformação em vez do nó da aplicação.

    Campos de função versus campos calculados

    Os valores dos campos calculados são armazenados no banco de dados. Os valores de campos de função ou scripts de função não são armazenados no banco de dados, mas são calculados no momento da recuperação. Os valores do campo de função estão sempre atualizados.

    Campos de função versus regras de negócio

    Use campos de função ou scripts quando a lógica de negócios for baseada em uma transformação simples de um ou mais campos existentes. Os campos de função e os scripts permitem implementar a lógica de negócios sem armazenar e manter o resultado de uma transformação.

    Campos de função versus filtros, cadeias de caracteres de consulta e Rhino

    Em vez de chamar o Rhino para executar transformações de cadeia de caracteres, você pode usar um campo de função ou script de função para executar as transformações para você. Os campos de função e os scripts de função são mais eficientes e resultam em valores atualizados que não precisam ser armazenados ou mantidos.

    Limitações do campo de função

    Como os cálculos do campo de função não são armazenados no banco de dados, algumas operações não são relevantes.
    • Os campos de função não podem ser auditados ou indexados diretamente.
      Nota:
      Para indexar um campo de função como se fosse um campo normal, certifique-se de que os campos individuais usados pela função estejam indexados. Ou, para obter o melhor desempenho, certifique-se de que haja um índice composto incluindo todos os campos usados na função.
    • Os campos de função não podem ser criptografados, pois o valor de um campo de função nunca é armazenado no banco de dados.
    • Campos de função não podem ser convertidos em campos regulares ou vice-versa.
    • Os campos de função que você cria na IU de emissão de relatórios não são compatíveis com referência com pontos. Para obter mais informações, consulte Configuração de campos de função na Emissão de relatórios.
    • A segurança é avaliada nos componentes da função e no valor calculado do campo. Quando usadas em visualizações, as seções que contêm informações que o usuário não tem permissão para ver são ocultas do usuário.
    • Os nomes das funções de campo devem ser exclusivos.

    Definição de funções da plataforma

    As funções de plataforma podem ser definidas de duas maneiras:
    1. Use as seguintes interfaces de programação de aplicações (APIs) para criar e usar funções em um script.
      Tabela 1. APIs de função
      APIs Descrição
      GlideDBFunctionBuilder com escopo Construa a função para executar uma operação SQL.
      GlideRecord – addFunction(Função de objeto) Aplique a função a um GlideRecord.
      GlideDBFunctionCaseBuilder - Global Criar declarações de caso.
    2. Crie um campo que contém a definição da função, conforme mostrado no exemplo a seguir.

      Definição de campo de função

      Marque a caixa de seleção do campo Função no formulário Entrada de Dicionário [sys_dictionary]. Esta ação especifica que o campo executa uma função em vez de armazenar um valor.

    operações glidefunction

    Os campos de função podem executar as seguintes operações usando a glidefunction: <operation> sintaxe. Ao fornecer um campo como um argumento, você pode fazer referência com pontos para campos relacionados. Por exemplo, cmdb_ci.name.
    Nota:
    O tipo de campo de função deve ser compatível com o tipo de retorno da função glide. Por exemplo, inteiro, longint, cadeia de caracteres e assim por diante. Se o tipo retornado não puder ser convertido para o tipo de dicionário, você obterá exceções.
    Tabela 2. Operações de campo de função
    Operação Descrição Exemplo
    add() Usa dois campos numéricos como entrada, adiciona-os e retorna os resultados como o valor do campo.

    Esta função também usa valores numéricos para qualquer uma das entradas. Coloque os valores numéricos entre aspas simples ou duplas.

    glidefunction:add(child_incidents, parent_incident)

    Retorna 6 se o incidente tiver cinco incidentes secundários e um primário.

    Tipos de retorno possíveis: Decimal, Número de ponto flutuante, Número inteiro grande, Número inteiro

    aglutinar () Usa qualquer número de campos separados por vírgula como entrada e retorna o primeiro valor não vazio. glidefunction:coalesce(closed_at, resolved_at, sys_updated_on)

    Se o valor de closed_at estiver vazio, a função retornará o valor de resolved_at. Se o valor de resolved_at também estiver vazio, a função retornará o valor de sys_updated_on.

    Tipo de retorno: texto

    concatenar () Usa qualquer número de constantes e campos separados por vírgula como entrada, concatena a entrada e retorna apenas uma cadeia de caracteres como um valor de campo. glidefunction:concat(incident_number, '/', short_description)

    Retorna "INC0001/Meu cliente precisa de um novo laptop". se o valor do campo de número for "INC0001" e o short_description for "Meu cliente precisa de um novo laptop".

    Tipo de retorno: texto

    datadiff() Usa dois campos de data/hora como entrada, calcula a diferença entre as datas em dias, minutos e segundos e retorna os resultados como o valor do campo de duração. glidefunction:datediff(closed_at, sys_created_on)

    Retorna a duração de um incidente a partir da data de criação até a data de encerramento. Exemplo de resultado: 10 dias, 8 horas, 23 minutos e 11 segundos

    Tipo de retorno: duração

    dia da semana () Usa dois argumentos: um campo de data e uma constante de '1' (a semana começa no domingo) ou '2' (a semana começa na segunda-feira). Retorna os resultados como um valor inteiro que representa o dia da semana.

    A função dayofweek() usa datas UTC, mas ajusta os valores de comparação com base no fuso horário da instância.

    glidefunction:dayofweek(resolved_at, '1').

    Se resolved_at ocorrer em uma quarta-feira, retornará 4 se o número inteiro for 1 e retornará 3 se o número inteiro for 2.

    Tipo de retorno: número inteiro

    distance_sphere () Usa dois locais e retorna a distância entre eles em metros.
    • glidefunction:istance_sphere('-0.189937', '51.473584', '80.206458', '25.767242')

      Retorna a distância entre os dois conjuntos de pares de longitude e latitude.

    • glidefunction:istance_sphere(u_location, '80.206458', '25.767242')

      Retorna a distância entre o campo de ponto geográfico u_location e as coordenadas de longitude e latitude.

    • glidefunction:istance_sphere(location1, location2)

      Retorna a distância entre os campos de ponto geográfico local1 e local2.

    • glidefunction:divide(istance_sphere(location1, '-0.189937', '51.473584'), '1000')

      Retorna a distância entre o campo de ponto geográfico location1 e Londres em quilômetros.

    Tipo de retorno: Decimal

    dividir () Usa dois campos numéricos como entrada, divide o primeiro pelo segundo e retorna os resultados como o valor do campo.

    Esta função também usa valores numéricos para qualquer uma das entradas. Coloque os valores numéricos entre aspas simples ou duplas.

    glidefunction:divide(u_num2,u_num1)

    Retorna 5 se num2 = 10 e num1 = 2.

    Tipos de retorno possíveis: Decimal, Número de ponto flutuante, Número inteiro grande, Número inteiro

    get_latitude () Usa qualquer coluna de ponto geográfico, campo numérico ou constante numérica e o converte em um valor de latitude válido dentro do intervalo [-90,90].
    • glidefunction:get_latitude(u_geo_point_field) Retorna o valor de latitude em u_geo_point_field.
    • glidefunction:get_latitude(u_numerical_column)Retorna o valor de latitude no u_numerical_column dentro do intervalo [-90,90].
    • glidefunction:get_latitude('305.767242') Retorna o valor de latitude -54.232758.

    Tipo de retorno: número de ponto flutuante

    get_longitude () Usa qualquer coluna de ponto geográfico, campo numérico ou constante numérica e o converte em um valor de longitude válido dentro do intervalo [-179,180].
    • glidefunction:get_longitude(u_geo_point_field) Retorna o valor de longitude em u_geo_point_field.
    • glidefunction:get_ longitude(u_numerical_column)Retorna o valor de longitude no u_numerical_column dentro do intervalo [-179,180].
    • glidefunction:get_longitude('380.206458') Retorna o valor de longitude 20.206458.

    Tipo de retorno: número de ponto flutuante

    maior () Usa dois ou mais valores como entrada e retorna o maior valor da lista de argumentos. glidefunction:greatest(10,100,1000)

    Retorna 1000

    Tipos de retorno numérico possíveis: Decimal, Número de ponto flutuante, Número inteiro grande, Número inteiro

    Esta função também funciona com campos de data e cadeia de caracteres.

    mínimo () Usa dois ou mais valores como entrada e retorna o valor mais baixo da lista de argumentos. glidefunction:least(10,100,1000)

    Retorna 10

    Tipos de retorno numérico possíveis: Decimal, Número de ponto flutuante, Número inteiro grande, Número inteiro

    Esta função também funciona com campos de data e cadeia de caracteres.

    comprimento () Usa um campo de cadeia de caracteres como entrada, calcula o tamanho do campo em caracteres e retorna os resultados como um valor de campo. glidefunction:length(short_description)

    Retorna 37 se short_description = "Esta aplicação está executando um teste".

    Tipo de retorno: número inteiro

    multiplicar () Usa dois campos numéricos como entrada, executa a multiplicação e retorna os resultados como um valor de campo.

    Esta função também usa valores numéricos para qualquer uma das entradas. Coloque os valores numéricos entre aspas simples ou duplas.

    glidefunction:multiply(u_num1, u_num2)

    Retorna 48 se num1 = 8 e num_2 = 6.

    Tipos de retorno possíveis: Decimal, Número de ponto flutuante, Número inteiro grande, Número inteiro

    posição () Usa dois campos de texto ou dois campos de texto e um número inteiro como entrada. Um ou ambos os campos de texto também podem ser cadeias de caracteres.
    1. Retorna a posição da primeira ocorrência da cadeia de caracteres do primeiro campo de texto no segundo.
    2. Se um número inteiro for especificado, esta função retornará a posição do segundo campo de texto após a posição do número inteiro.

    Retorna 0 se o primeiro campo de texto não estiver presente no segundo (após a posição do número inteiro, se especificado).

    • glidefunction:position('e',short_description)

      Se o valor do campo short_description for "Este computador está executando um upgrade", retornará 12.

    • glidefunction:position('e',short_description,'14')

      Se o valor do campo short_description for "Este computador está executando um upgrade", retornará 19.

    Tipo de retorno: número inteiro

    subcadeia de caracteres () Usa um campo de texto e dois números inteiros como entrada. Retorna a primeira instância de uma cadeia de caracteres que começa na posição do primeiro número inteiro e tem o comprimento do segundo. glidefunction:substring(short_description, '7', '2')

    Se o valor do campo short_description for "Indo para a loja", retorna "ir".

    Tipo de retorno: texto

    subtract() Usa dois campos numéricos como entrada, subtrai o segundo do primeiro e retorna o resultado como o valor do campo.

    Esta função também usa valores numéricos para qualquer uma das entradas. Coloque os valores numéricos entre aspas simples ou duplas.

    glidefunction:subtract(u_num1, u_num2)

    Retorna 2 se num1 = 8 e num_2 = 6.

    Tipos de retorno possíveis: Decimal, Número de ponto flutuante, Número inteiro grande, Número inteiro

    para_geopoint() Usa colunas de latitude e longitude ou valores numéricos e os converte em uma coluna de ponto geográfico.
    • glidefunction:to_geopoint(u_long_column, u_lat_column)

      Converte as colunas de latitude e longitude em uma única coluna geo_point.

    • glidefunction:to_geopoint('80.206458','25.767242')

      Retorna um campo geo_point com as coordenadas "(80.206458, 25.767242)".

    Tipo de retorno: ponto geográfico

    Criar um campo de função para executar funções de banco de dados

    Crie um campo que exiba os resultados de uma função de banco de dados, como uma operação matemática, cálculo de comprimento de campo ou cálculo de dia da semana. Teste em uma instância de subprodução antes de implantar em uma instância de produção.

    Antes de Iniciar

    Função necessária: personalize_dictionary ou admin.

    Procedimento

    1. Navegar até Tudo > Definição do Sistema > Dicionário.
    2. Clique em Nova.
    3. Selecione o campo Função.
    4. Preencha estes campos no formulário.
      Tabela 3. Campos para campos de função
      Campo Descrição
      Tabela Tabela à qual o campo de função é adicionado.
      Tipo Especifica o tipo de campo: cadeia de caracteres, número, data e assim por diante.
      Rótulo da coluna Define o rótulo da coluna.
      Nome da coluna Define o nome da coluna. Criado automaticamente com base no rótulo da coluna.
      Comprimento máximo Define o tamanho máximo do valor de retorno.
      Campo da função Se selecionado, cria um campo que exibe os resultados de uma função de banco de dados, como uma operação matemática, cálculo de comprimento de campo ou cálculo de dia da semana.

      Depois que o novo registro de função for salvo, você não poderá desmarcar a caixa de seleção para tornar o campo um campo regular.

      Definição de função Define a função que o campo executa.

      Inicia com glidefunction:, seguido pela operação a ser executada (por exemplo, concat), seguida pelos parâmetros da função. As constantes devem ser colocadas entre aspas simples.

      Por exemplo, a definição de função a seguir cria um campo que mostra a descrição resumida, seguida por um espaço e pelo nome do solicitante:

      glidefunction:concat(short_description, ' ', caller_id.name)

      Nota:
      Os parâmetros de função são compatíveis com referência com pontos. Consulte Dot-walking to data in related tables.
    5. Clique em Enviar.
      Você retorna à tabela Entrada de Dicionário [sys_dictionary].
    6. Navegue até a tabela à qual você adicionou o campo de função.
    7. Adicione o campo de função à lista.

    Resultado

    Use o campo de função como qualquer outro campo. Por exemplo, adicione-o a um formulário, use-o em um filtro ou no construtor de condições.

    Se a definição da função for inválida, em vez do valor esperado, você receberá a mensagem Função inválida se o campo da função for um campo do tipo cadeia de caracteres ou um valor vazio para outros tipos de campo.