Skip To Content

Calcular valores de campo

Os cálculos de campo permitem que o proprietário da camada de feição hospedada ou um administrador do portal altere os valores de cada linha em um campo específico na tabela de atributos de uma camada escrevendo e executando uma Expressão de SQL

Por exemplo, se você tiver uma camada de feição hospedada que armazene informações sobre vendas de propriedades—incluindo o preço de venda e taxa de imposto para o local da propriedade—você poderá adicionar um campo na camada para armazenar os impostos de propriedade estimados. Para preencher o campo estimated_property_taxes , defina uma expressão de cálculo para o campo que aceita os valores no campo sale_price e multiplique-os pelos valores de tax_rate .

A próxima seção explica como calcular os valores de um campo a partir da página de detalhes de uma camada de feição hospedada. As seções subsequentes fornecem exemplos de cálculos comuns.

Calcular valores para um campo

Siga estas etapas para calcular valores do campo de string, numéricos ou de data em um campo.

Anotação:
Os cálculos de campo não podem ser desfeitos. Por esta razão, uma boa prática é adicionar um campo, calcular valores para ele e confirmar que o cálculo é o que você desejava. Se for, você poderá calcular o campo original para igualar ao campo adicionado. Após confirmar que os valores estão corretos no campo original, você poderá excluir o campo que você adicionou.
  1. Na página de itens da camada, clique na guia Dados para mostrar a tabela.
    Anotação:

    Você também pode executar estas etapas a partir da tabela no Map Viewer.

  2. Clique na coluna contendo os valores que você deseja calcular.
  3. Siga um destes procedimentos para abrir a caixa de diálogo Calcular Campo :
    • Clique em Calcular.
    • Clique em Mostrar Visualização Detalhada > Calcular.
  4. Utilize operadores básicos, uma lista de campos e funções para compor a expressão de cálculo.
  5. Após ter composto sua expressão, clique no botão Validar para garantir que não haja erros. Se a expressão for inválida, clique no botão Remover e componha uma nova.
  6. Para aplicar o cálculo em todos os valores no campo, clique em Calcular.

O tempo necessário para o cálculo ser concluído depende da complexidade da expressão e do número de feições em sua camada.

Cálculos de exemplo

As seções seguintes fornecem sintaxe de exemplo ou métodos para executar cálculos comuns no portal ArcGIS Enterprise.

Execute uma operação matemática em valores numéricos em dois campos existentes para preencher um terceiro campo

Um dos cálculos mais comuns que você executa são para derivar um valor numérico novo baseado em valores existentes em sua camada de feição. Por exemplo, você pode subtrair um ano das vendas totais para todas as lojas dos totais de vendas de outro ano para localizar a mudança em lucro de um ano até o próximo, ou você pode dividir o número total de residentes abaixo de 18 anos de idade pela população total para determinar a fração da população que está abaixo de 18.

Exemplo de SQL

Utilize o cálculo em uma campo numérico (SalesDifference) para localizar a diferença entre os valores nos campos numéricos, Sales2016 e Sales2017.

Sales2016 - Sales2017

Preencha um campo numérico com um valor número decimal que seja o resultado doo cálculo que a porção da população está abaixo de 18 anos de idade.

PopUnder18/TotalPop

Concatene os valores de string de campos existentes em um novo campo de string

Outro cálculo que preenche um novo campo envolve combinar valores de campos de string existentes. Por exemplo, você pode ter dois campos de string para localizações de quarto em um hotel—Floor e Room—e você deseja combiná-los em um campo de string que contenha ambos.

Exemplo de SQL

Neste exemplo, os valores dos campos Floor e Room serão combinados em um campo único.

CONCAT(Floor,Room)

Remova espaços iniciais ou finais dos campos de string

Quando os usuários digitam ou colam os valores em um campo quando eles estiverem editando, eles podem cometer enganos e deixar um espaço inicial ou final no texto. Você pode limpar estes enganos cortando os valores.

Exemplo de SQL

Neste exemplo, você sabe que o editor adicionou um espaço inicial ao colar New Hampshire no campo que armazena os nomes de estado, então você irá cortar o espaço a partir do final da string.

Trim(TRAILING ' ' FROM 'New Hampshire ')

Preencha um campo com valores diferentes dependendo de valores em outro campo

Às vezes, o valor que você deseja ArcGIS Enterprise para escrever em um campo varie por feição e depende de outro valor da mesma feição. Por exemplo, você pode adicionar um campo de string à camada de feição para armazenar o texto que descreve um valor numérico ou valor de string abreviado em outro campo.

Exemplo de SQL

Estas classificações de cálculos normalmente contam com cláusulas WHERE, que não são atualmente suportados na interface de cálculo nos portais do ArcGIS Enterprise . Entretanto, você pode aplicar um filtro para a camada no Map Viewer, calcular os valores das feições filtradas, remover este filtro, aplicar outro filtro baseado em um valor diferente e calcular os valores para estes campos.

Por exemplo, se você tiver um campo numérico que registre tipos de armazenamentos utilizando códigos (3, 2 e 1), e você deseja um campo de string que diz o que cada um destes códigos representam (cadeia, franquia e independente), você pode adicionar um campo de string para a camada, adicionar a camada no Map Viewer, filtrar para cada valor de código, e calcular o valor para a campo de string.

  1. Adicione um campo de string para a camada de feição hospedada. Configure o comprimento para acomodar a string mais longa que você armazenará.

    No exemplo de tipo de armazenamento, o novo nome de campo é TypeFull.

  2. Na guia Visão Geral da página de detalhes da camada, clique em Abrir no Visualizador de Mapa.
  3. Defina um filtro na camada de forma que somente as feições do mesmo tipo estejam presentes no mapa.

    Para o exemplo de armazenamento, aplique um filtro que retorne somente as feições em que o valor de campo StoreCode seja 3.

  4. Abra a tabela de atributos da camada.
  5. Clique no nome do campo que você adicionou na etapa 1 e clique em Calcular.

    Para este exemplo, clique no nome TypeFull e clique em Calcular.

  6. Digite a string que deseja inserida neste campo para estas feições. Inclua a string dentro de aspas únicas ('').

    Digite 'chain' para preencher o campo TypeFull de todas as feições que tiveram um StoreCode de 3.

  7. Clique em Calcular.
  8. Remova o filtro que você definiu na etapa 3. (Abra a janela Filtrar da camada novamente e clique em Remover Filtro).
  9. Repita as etapas 3 até 8 para os valores restantes que você precisa calcular.

    Para o exemplo de armazenamento, defina um filtro para que StoreCode seja 2 e calcule TypeFull para armazenar 'franchise'. Remova este filtro, defina um novo filtro para que StoreCode seja 1, e calcule TypeFull para armazenar 'independent'.

  10. Quando você finalizar o cálculo dos valores para o novo campo, feche Map Viewer sem salvar o mapa.

Substitua um valor com outro

Se você precisar substituir um valor existente com outro—por exemplo, o modo que você representa um valor particular alterou ou você precisa corrigir valores inseridos errados—você pode localizar todos os valores existentes de um campo e substitua-os com um novo valor.

Aviso:

Os cálculos são imediatamente salvos na camada de feição. Se você substituir um valor existente no erro, você precisará calcular novamente para alterar o valor de volta.

Exemplo de SQL

Semelhante ao modo que você preencheria um campo baseado nos valores em outro campo, você pode aplicar um filtro para camada no Map Viewer que retorna somente estas feições que contém o valor de campo que deseja substituir. A seguir, configure os campos filtrados igualmente ao novo valor para atualizar o valor dos campos.

Por exemplo, se você precisar corrigir os valores ou converter uma palavra em uma abreviação, filtre pela string literal que você precisa alterar e configure o campo para igualar ao novo valor.

  1. Adicione a camada de feição hospedada que você precisa atualizar para Map Viewer.

    Você deve ser o proprietário da camada ou um administrador do portal.

  2. Defina um filtro na camada de forma que somente as feições que contém o valor que deseja para substituir são mostrados no mapa.

    Por exemplo, se você souber várias feições que contém os valores de Crt do campo StreetType , aplique um filtro que retorna somente as feições em que o valor de campo StreetType seja Crt.

  3. Abra a tabela de atributos da camada.
  4. Clique no nome de campo e clique em Calcular.

    Para este exemplo, clique no campo StreetType e clique em Calcular.

  5. Digite a string que deseja inserida neste campo para estas feições. Inclua a string dentro de aspas únicas ('').

    Digite 'Ct' para preencher os campos filtrados StreetType com a abreviação corrigida para Court.

  6. Clique em Calcular para aplicar as alterações dos campos filtrados.
  7. Feche o Map Viewer sem salvar o mapa.

Adicionar ou subtraia tempo de uma data

Você pode desejar adicionar tempo ou subtrair o tempo de um campo de data ou valor literal para produzir um campo de data atualizado. Por exemplo, você pode calcular uma data de inspeção futura ou de revisão ao adicionar tempo para uma data.

Exemplo de SQL

Utilize uma consulta INTERVAL para adição de tempo ou substração de tempo de um campo de data, como mostrados nos cálculos seguintes. O primeiro exemplo adiciona três dias a uma data para resultar em uma nova data. O segundo exemplo subtrai três dias de um campo de carimbo de tempo.

<DateField> + INTERVAL '3'DAY = updated date
<DateField> - INTERVAL '3 00:00:60' DAY TO SECOND = updated date

Você pode utilizar INTERVAL com os seguintes valores de tempo e data:

  • DIA
  • HORA
  • MINUTO
  • SEGUNDO
  • DIA PARA HORA
  • DIA PARA MINUTO
  • DIA PARA SEGUNDO
  • HORA PARA MINUTO
  • HORA PARA SEGUNDO
  • MINUTO PARA SEGUNDO

Calcular a diferença entre duas datas

Você pode desejar o cálculo do comprimento de tempo entre duas datas. Por exemplo, se você tiver as datas de instalação para metros elétricos e você também tiver as datas de inspeção, você poderá calcular a diferença entre as duas datas para verificar se o comprimento de tempo entre a instalação e a inspeção caem dentro das diretrizes permitidas. O resultado do cálculo é um campo de número, ao invés de um campo de data.

Exemplo de SQL

Qualquer combinação dos campos de data e literais de data pode ser utilizada para calcular o comprimento de tempo entre duas datas. O primeiro cálculo abaixo utiliza um campo de data, enquanto o segundo utiliza um literal de data. O terceiro e quarto cálculos utilizam ambos um campo de data e um literal de data.

<DateField1> - <DateField2> = number of days in between
DATE'<SQL-supported Date Literal>' - DATE'< SQL-supported Date Literal>' = number of days in between
<DateField1> - DATE'<SQL-supported Date Literal>' = number of days in between
DATE'<SQL-supported Date Literal>' - <DateField2>  = number of days in between

O resultado é um campo de número que é calculado subtraindo um campo de data ou literal de outro campo de data ou literal. O resultado do número (em dias) pode ser um número inteiro e também pode incluir uma fração—por exemplo, 1.5 representaria um dia e meio ou 36 horas.

No exemplo da inspeção de metro elétrico mencionado acima, quaisquer dos seguintes cálculos podem ser utilizados para calcular o comprimento de tempo entre um data de instalação em 6/1/2015 e uma data de inspeção em 10/1/2015. O primeiro cálculo utiliza campos de data, o segundo utiliza literais de data, e o terceiro e quarto ambos utilizam um campo de data e um literal de data.

<InspectionDateField> - <InstallationDateField> = 122 (days)
DATE'10/1/2015' - DATE'6/1/2015' = 122 (days)
<InspectionDateField> - DATE'6/1/2015' = 122 (days)
DATE'10/1/2015' - <InstallationDateField> = 122 (days)

As considerações ao calcular os valores de campo

  • Se você tiver um filtro em sua camada no Map Viewer, somente os registros que atenderem os critérios do filtro terão seus valores calculados.
  • Ao escrever expressões de SQL, Calcular Campo funciona somente com nomes de campo, não nomes alternativos de campo. A lista Campos mostra a você todos os nomes de campo disponíveis para cálculos. Você pode filtrar esta lista pelos tipos de campo String, Numérico e Data.
    • Se você pairar sobre um nome de campo na lista Campos, o nome alternativo e tipo de campo serão exibidos.
    • Se você clicar em um nome de campo na lista Campos, o campo será adicionado à expressão.
  • Você não pode calcular valores de campo em cópias das camadas de feição hospedadas, camadas de feição hospedadas que tenham camadas de mosaico relacionadas, camadas de feição de espaço-tempo hospedadas ou de visualizações criadas a partir das camadas de feição de espaço-tempo hospedadas.
  • Somente consultas SQL padronizadas são suportadas ao calcular valores de campo.
  • Você não pode utilizar a função MOD numérica em campos duplos. Molde o campo para um inteiro, como mostrado no exemplo.

Referência de SQL padronizada (SQL-92)

Quando você gravar uma expressão de SQL para calcular valores de campo, você deve utilizar a SQL padronizada. Esta seção fornece uma lista dos operadores e funções de SQL que você pode utilizar para cálculos de SQL no portal ArcGIS Enterprise.

Após ter criado sua expressão, clique no botão Calcular. Se houver quaisquer erros, uma mensagem de erro aparece na parte inferior da caixa de diálogo. Corrija a sintaxe da expressão e calcule novamente.

Operadores

Na caixa de diálogo Calcular Campo você pode construir expressões SQL simples utilizando operadores, tais como, mais, menos, multiplicar e dividir. Exemplos e dicas para utilizar estes operadores são os seguintes:

  • Para multiplicar todos os valores em um campo numérico denominado SAMPLE por 100.0, digite SAMPLE * 100.0 para a expressão.
  • Para equações mais complexas, você pode utilizar os parênteses para especificar a ordem de cálculos, por exemplo, SAMPLE * (BASELINE - 40).
  • Os operadores matemáticos não funcionam com campos de string. Você precisará utilizar as funções da string descrita na seção Funções da string.
  • Se você estiver calculando um campo de tipo duplo para o campo de tipo inteiro, a função CAST poderá ser automaticamente adicionada na sua expressão. Por exemplo, se você estiver calculando um campo duplo denominado POP para um campo inteiro denominado SAMPLE, a expressão aparecerá como CAST(SAMPLE AS FLOAT). Não remova a função CAST. Consulte Funções numéricas abaixo das informações na função CAST.
  • Para incluir uma apóstrofe na string, utilize duas aspas únicas para a apóstrofe. Por exemplo, 'Nightingale''s'. Não utilize aspas duplas.

Funções

Além de operadores de expressões simples utilizando operadores, você também pode utilizar funções para construir expressões SQL. As funções trabalham com nomes de campo, literais e outras funções. Por exemplo, suponha que você precise calcular um campo duplo para ser TOTALPOP dividido por POP18. Se qualquer feição tiver um POP18 igual a zero, o cálculo resultará em um erro de divisão por zero. Você pode guardar isto utilizando a função NULLIF, descrita abaixo. A expressão seria TOTALPOP / NULLIF(POP18, 0).

As funções utilizam parâmetros. Nas tabelas abaixo, qualquer parâmetro pode ser como segue:

  • Um nome de campo, desde que o tipo de campo corresponda ao tipo de parâmetro (string, número ou data).
  • Um literal, como 'Sailboat' (uma string cercada por aspas únicas), o número 5 ou uma data no formato MM/DD/YYYY hh:mm:ss, cercado por aspas únicas.
  • Uma função que retorna um valor do tipo adequado (string, número, data). Por exemplo, FLOOR(POWER(SAMP_ERR, 0.5)) retorna o maior inteiro que é menor ou igual a raiz quadrada de SAMP_ERR.

Para propósitos ilustrativos, os exemplos na coluna de descrição das tabelas abaixo utilizam principalmente parâmetros literais. Você pode substituir um nome de campo ou outra função para estes parâmetros.

Funções de data

Vários cálculos podem ser executados em campos de data. Por exemplo, você pode adicionar ou subtrair tempo de um campo de data ou calcular a diferença entre dois campos de data.

Ao trabalhar com campos de data, leia estas considerações importantes.

Você pode utilizar qualquer combinação dos campos de número e data, e literais ao calcular campos de data. Quando tiver literais de data, você deverá utilizar formatos de data suportados pelo SQL.

As seguintes funções de data estão disponíveis:

FunçãoDescrição

CURRENT_DATE

Retorna a data atual no horário UTC.

O que você vê no cliente depende do cliente que você está utilizando. No site da web do portal, as datas são exibidas no fuso horário do seu navegador.

O seguinte exemplo retorna todos os valores no campo inspection_date que tenham uma data posterior à data de hoje:

inspection_date > CURRENT_DATE

CURRENT_TIMESTAMP

Retorna a data e hora atuais de UTC (horas, minutos, segundos).

O que você vê no cliente depende do cliente que você está utilizando. No site da web do portal, a hora é exibida no horário local do seu navegador.

Neste exemplo, todos os valores do espaço de tempo anteriores à data de hoje e hora atual (em UTC) são retornados ao campo appointments :

appointments < CURRENT_TIMESTAMP

EXTRACT(<unit> FROM '<date>')

Retorne uma parte única (<unit>) da <date> especificada. Os possíveis valores de <unit> incluem, mas não se limitam ao ano, mês, dia, hora e minuto.

Os exemplos incluem o seguinte:

  • EXTRACT(MONTH FROM '12-21-2016')—retorna 12.
  • EXTRACT(DAY FROM '12-21-2016 12:00')—retorna 21.
  • EXTRACT(HOUR FROM '12-21-2016 15:00:44')—retorna 15.

Funções numéricas

FunçãoDescrição

ABS(<number>)

Retorna o valor absoluto (positivo) do número que você especificar.

CEILING(<number>)

Retorna o menor inteiro maior que, ou igual ao número especificado.

Exemplo

  • CEILING(12.93)—o resultado é 13.

COS(<number>)

Retorna o co-seno trigonométrico de <number>, que é assumido para ser um ângulo em radianos.

CAST(<number>AS FLOAT | INT)

Converte um número para um tipo diferente. FLOAT converte o número especificado para um duplo e INT converte para um inteiro.

FLOOR(<number>)

Retorna o maior inteiro que é menor ou igual ao número especificado.

Exemplo

  • FLOOR(12.93)—o resultado é 12.

LN(<number>,<decimal_place>)

O logaritmo natural do número especificado.

LOG(<number>,<decimal_place>)

O logaritmo de base 10 do número especificado.

MOD(<number>, <n>)

Retorna o restante após o dividendo (<number>) ser dividido pelo divisor <n>. Ambos <n> e <number> devem ser do tipo inteiro.

Os exemplos incluem o seguinte:

  • MOD(10, 4)—o resultado é 2.
  • MOD(CAST(DBLFIELD AS INT), 4)DBLFIELD é um campo do tipo duplo, então a função CAST é necessária para converter valores duplos para inteiro.

NULLIF(<number>, <value>)

Retorna null se o número especificado for igual ao valor especificado. NULLIF é comumente utilizado para evitar erros de divisão por zero configurando <value> para 0.

Sempre que um cálculo encontrar um valor de campo null em alguns dos seus parâmetros, o resultado do cálculo será null.

Por exemplo, suponha que você precise calcular um campo duplo para ser TOTALPOP dividido por POP18. Se qualquer feição tiver um valor POP18 igual a zero, o cálculo resultará em um erro de divisão por zero. Você pode criar um filtro para ocultar registros onde POP18 é zero, e executar seu cálculo. Um atalho é utilizar NULLIF.

  • TOTALPOP / NULLIF(POP18, 0)—retorna null se POP18 for igual a zero; caso contrário, o valor TOTALPOP / POP18 será retornado.

POWER(<number> , <y>)

Retorna o valor do número especificado elevado à potência especificada (<y>).

ROUND(<number> , <length>)

Arredonda o número especificado para o comprimento especificado.

Se você utilizar um número positivo para <length>, o número será arredondado para a posição decimal especificada por <length>. Quando <length> é um número negativo, o <number> especificado é arredondado no lado esquerdo do ponto decimal.

Exemplos

  • ROUND(10.9934,2)—retorna 10,99.
  • ROUND(10.9964,2)—retorna 11,00.
  • ROUND(111.0,-2)—retorna 100.00.

SIN(<number>)

Retorna o seno trigonométrico do <number> especificado, que é assumido como sendo um ângulo em radianos.

TAN(<number>)

Retorna a tangente do <number> especificado, que é assumido como sendo um ângulo em radianos.

TRUNC(<number>,<decimal_place>)

Trunca o <number> na <decimal_place> especificada.

Uma <decimal_place> positiva trunca para a posição decimal especificada. Quando <decimal_place> é um número negativo, o <number> é truncado no lado esquerdo do ponto decimal.

Exemplos

  • TRUNC(111.996,2)—retorna 111.99.
  • TRUNC(111.996,-2)—retorna 100.00.

Funções de string

FunçãoDescrição

CHAR_LENGTH(<string>)

Retorna o número de caracteres na string especificada. O resultado é um inteiro.

Exemplo

  • CHAR_LENGTH('Redlands')—o resultado é 8.

CONCAT(<string1>, <string2>)

Concatena dois valores de string.

Somente duas strings podem ser fornecidas. Para concatenar mais de duas strings, insira funções CONCAT consecutivas como mostrado abaixo.

Exemplos

  • CONCAT('A', 'B')—o resultado é 'AB'.
  • CONCAT('A', CONCAT(':', 'B'))—o resultado é 'A:B'.

Os valores nulos são convertidos em uma string vazia.

POSITION(<substring> in <string>)

Retorna a posição da primeira ocorrência da substring especificada na string que você especificar. Se substring especificada não for localizada, o resultado será 0.

Exemplos

  • POSITION('boat'in 'Sailboat')—o resultado é 5.
  • POSITION('motor'in 'Sailboat')—o resultado é 0.

SUBSTRING(<string>, <start>, <length>)

Retorna uma parte de um valor de string; <start> é um índice inteiro especificando onde iniciam os caracteres retornados e <length> é o número de caracteres para ser retornado.

Exemplos

  • SUBSTRING('Sailboat', 5, 4)—o resultado é 'boat'.
  • SUBSTRING('Sailboat', 1, 4)—o resultado é 'Sail'.
  • SUBSTRING('Sailboat', 5, 100)—o resultado é 'boat'.

TRIM(BOTH | LEADING | TRAILING ' ' FROM <string>)

Retorna uma string onde todos os espaços iniciais ou finais são removidos da string especificada.

Exemplo

  • TRIM(BOTH ' ' FROM ' San Bernardino ')—o resultado é 'San Bernardino'.

Note que o segundo parâmetro são duas aspas únicas com um espaço entre elas.

UPPER(<string>)

Retorna uma string onde todos os caracteres são convertidos em letra maiúscula.

Exemplo

  • UPPER('Sailboat')—o resultado é 'SAILBOAT'.

LOWER(<string>)

Retorna uma string onde todos os caracteres são convertidos em letra minúscula.

Exemplo

  • LOWER('Sailboat')—o resultado é 'sailboat'.