Вы можете добавить и вычислить новые поля в набор данных с помощью таблицы данных или data engineering. Вычисленные поля позволяют создавать значения, например, динамику роста, проценты убытка и изменения во времени, путём выбора поля из набора данных и применения к ним операторов и функций.
Вы также можете вычислить поля при помощи инструментов Вычислить % изменения, Вычислить отношение и Вычислить z-оценку в разделе Найти ответы.
Подсказка:
Используйте таблицы данных, чтобы добавить нормированные данные в ваш набор данных для построения карт, диаграмм и таблиц. После вычисления данных и добавления их в набор данных измените тип поля, чтобы определить его как поле доля/отношение . Дополнительно о нормализации данных см. Картограммы.
Вычисление поля в таблице данных
Поля, вычисленные в таблице данных, отображаются только в рабочей книге и не добавляются в исходный набор данных. Если вы желаете сохранить вычисленное поле вне рабочей книги, можете создать новый векторный слой, опубликовав этот набор данных или использовав инжиниринг данных.
Примечание:
В таблице данных представлены ваши данные, объем таблицы ограничен пределом отображения в 2000 строк. Функция сортировки в восходящем и нисходящем порядке делает возможным просмотр 2000 верхних и 2000 нижних строк. Все вычисления выполняются для полного набора данных.
Выполните следующие шаги, чтобы вычислить поле в таблице данных:
- Откройте книгу и добавьте данные, если это необходимо.
- С панели данных щелкните кнопку Опции набора данных рядом с набором данных, в который вы хотите добавить вычисленное поле.
- Щелкните Просмотр таблицы данных.
- Нажмите + поле.
Столбец с именем Новое поле добавляется к таблице.
Примечание:
Вы можете изменить размер и порядок столбцов, но эти изменения не сохраняются.
- Щелкните заголовок столбца и введите более понятное имя.
- Щелкните fx или Ввести функцию вычисления, чтобы отобразить меню с функциями, именами полей и операторами для построения формулы.
Вместо кнопок меню fx можно использовать соответствующие кнопки клавиатуры.
- Воспользуйтесь функциями, полями и операторами для завершения вычислений.
- Щелкните Запустить.
Если кнопка Запустить не активна, в синтаксисе вычислений имеется ошибка.
Новое вычисленное поле появляется в конце списка полей набора данных. Для удаления вычисленного поля выделите его и щелкните кнопку Удалить вычисленное поле .
Вычисление столбца с помощью data engineering
Примечание:
Data engineering доступно в Insights desktop. Все пользователи Insights in ArcGIS Online и Insights in ArcGIS Enterprise получают доступ к Insights desktop. Дополнительные сведения см. в разделе Введение в ArcGIS Insights.
Data engineering в настоящий момент доступно в Предварительном просмотре.
Инструмент Вычислить столбец можно добавить в модель данных и использовать для добавления столбцов в выходной набор данных. Столбцы, вычисленные в рабочей книге данных, будут добавляться в выходной набор данных, а не существовать только в рабочей книге.
Выполните следующие шаги, чтобы вычислить столбец с помощью data engineering:
- Откройте рабочую книгу данных в Insights desktop и добавьте данные, если это необходимо.
- На боковой панели инструментов щелкните кнопку Вычислить столбец .
- Для параметра Имя нового столбца введите имя нового столбца.
Примечание:
Поддерживаемые базы данных в Insights поддерживают только буквы, цифры и знаки подчеркивания для имен столбцов. Неподдерживаемые символы в именах столбцов преобразуются в символы подчеркивания при сохранении в базу данных (например, population/sq mile преобразуются в population_sq_mile). Для достижения наилучших результатов примените имя столбца, в котором используются только поддерживаемые символы, а затем при необходимости обновите псевдоним столбца, указав другие символы.
- В поле Выражение столбца используйте функции, имена столбцов и операторы, чтобы выполнить вычисление при необходимости.
Можно использовать соответствующие кнопки клавиатуры, чтобы заменить любые кнопки.
Примечание:
Если рабочая книга данных содержит более одного набора данных, параметры ввода основаны на активной таблице.
- Щелкните Запустить.
Если кнопка Запустить не активна, в синтаксисе вычислений имеется ошибка.
В таблицу добавляется новый вычисленный столбец, а в модель данных добавляется инструмент Вычислить столбец.
Операторы
При вычислении поля могут потребоваться математические и логические операторы. Для вычисления полей доступны следующие операторы:
Оператор | Использование |
---|---|
+ | Сложение. |
- | Вычитание. |
× | Умножение. Эквивалент на клавиатуре *. |
÷ | Деление. Эквивалент на клавиатуре /. |
xy | Функция Степень. Эквивалент на клавиатуре ^. |
< | Меньше. |
> | Больше. |
= | Равно. |
<= | Меньше или равно. |
>= | Больше или равно. |
<> | Не равно. |
, | Запятая, используется как разделитель компонентов синтаксиса в функциях. |
( | Левая скобка. |
) | Правая скобка. |
AND | Логический оператор для соблюдения всех условий. |
OR | Логический оператор для соблюдения одного из условий. |
IS NULL | Бинарный оператор, проверяющий, равны ли значения в поле значению null. Выходное значение 0 назначается, когда проверяемое значение не равно null, а выходное значение 1 назначается, когда проверяемое значение равно null. |
IS NOT NULL | Бинарный оператор, проверяющий, равны ли значения в поле значению null. Выходное значение 0 назначается, когда проверяемое значение равно null, а выходное значение 1 назначается, когда проверяемое значение не равно null. |
Примечание:
Математические операции, такие как +, -, > и = совместимы с числовыми полями и полями доля/отношение. Функции, такие как CONCATENATE() и DATEDIF() могут использовать вместо определенных математических операций для строковых полей и полей даты/времени, соответственно.
Операторы IS NULL и IS NOT NULL совместимы со всеми типами полей (строка, число, доля/отношение и дата/время), за исключением местоположений. Некоторые строковые поля со значениями null могут быть настроены как пустые строки. В таких случаях IS NULL и IS NOT NULL не вернет ожидаемых результатов. Следует использовать выражения field="" и field<>"" вместо field IS NULL и field IS NOT NULL соответственно.
Операторы AND и OR могут использоваться для объединения условий с различным синтаксисом, в отличие от соответствующих логических функций. В следующих примерах показаны эквивалентные вычисления с использованием функций и операторов:
Примечание:
При вычислении полей, AND и OROR должны использоваться в функции IF().
Функция | Оператор |
---|---|
IF(AND(MeanAge>=18, MeanAge<=33),"Millennial","Other") | IF(MeanAge>=18 AND MeanAge<=33,"Millennial","Other") |
IF(OR(Crime="Theft", Crime="Theft from vehicle", Crime="Shoplifting"), "Larceny", "Other") | IF(Crime="Theft" OR Crime="Theft from vehicle" OR Crime="Shoplifting", "Larceny", "Other") |
Функции
Функции можно выбрать с помощью кнопки fx или поля Ввести функцию вычисления в таблице данных. Есть четыре типа функций: строковые, числовые, функции для дат и логические.
Когда вы добавляете функцию в вычисление, появляется всплывающее окно с синтаксисом функции. Вы можете убрать всплывающее окно, используя кнопку закрытия , или вернуть его, щелкнув функцию в поле Введите функцию вычисления.
Строковые функции
Большинство строковых функций использует строковые входные данные и выдаёт в результате строковые данные. Исключение составляют две функции: VALUE() и FIND(). Они обе используют строковые входные данные, а выдают числовые в результате.
Текст в строковых функциях может быть либо буквенным (текст, помещенный в кавычки), либо это значения поля категории. В следующей таблице в примерах используются и поля категорий, и значения этих полей. Кавычками обособляются значения полей, и это демонстрирует, что поля содержат категорийные данные.
Синтаксис | Описание | Пример |
---|---|---|
CONCATENATE(text1, [text2], ... ) | Соединяет два или более строковых значения. | Набор данных школ Калифорнии содержит отдельные поля для адреса улицы, города и почтового индекса. С помощью функции CONCATENATE() из них можно создать одно поле:
|
FIND(find_text, within_text, [start_num]) | Выдаёт позицию указанного тексте (символа или символов) в строковом или текстовом поле. Функция FIND() особенна полезна, когда она используется вместе с другими функциями, например, MID(), LEFT() или RIGHT(). | Набор данных содержит поле с адресом улицы (включающее имя улицы и номер). Чтобы классифицировать данные по улицам, необходимо удалить имя улицы из полного адреса с помощью функции MID(). Однако каждый номер имеет различную длину, и для каждой строки start_num будет отличаться. Значение start_num можно найти, если применить функцию FIND():
|
LEFT(text, [num_chars]) | Возвращает часть текстового поля.
| Набор данных о дорожных происшествиях включает поле категории, содержащее день, когда произошло событие. В нем записаны день недели, дата и год. Чтобы изучить происшествия по дням недели, с помощью функции LEFT() можно вычислить новое поле, которое будет содержать первые три символа исходного поля (начиная со дня недели):
|
LOWER(text) | Возвращает символьное выражение, где все символы переведены в символы нижнего регистра. | Управление общественных сооружений составляет список дорожных знаков, которые необходимо убрать. К списку были добавлены новые записи, поле Status необходимо привести к стандартному виду, чтобы было удобно отобразить знаки уникальными значениями. Значения поля Status можно стандартизировать, чтобы все символы были с маленькой буквы, с помощью функции LOWER():
|
MID(text, start_num, [num_chars]) | Возвращает часть текстового поля.
| Набор данных школ Калифорнии содержит отдельные поля для адреса улицы, города и почтового индекса. Название улицы можно отделить от адреса улицы с помощью функции MID():
|
RIGHT(text, [num_chars]) | Возвращает часть текстового поля.
| Набор данных национальных парков включает поле с именем парка и двузначным кодом штата. Чтобы назначить символы парков в зависимости от штата, можно добавить новое поле и вычислить его значения с помощью функции RIGHT():
|
SUBSTITUTE(source_text, old_text, new_text) | Заменяет старый текст на указанный новый.
| Набор данных c местоположениями выбоин содержит поле с адресом улицы. Набор данных требует обновления, если улицу Абрикосовая переименуют в Виноградная. Поле street_name можно обновить при помощи функции SUBSTITUTE():
Примечание:Функция SUBSTITUTE() заменит все вхождения old_text на new_text. Например, результирующий текст для функции SUBSTITUTE("aba", "a", "c") будет "cbc". |
TRIM(text) | Возвращает строку с удаленными пробелами, которые были в начале и в конце строки. | Сервис объектов содержит текстовые поля, значения которых содержат лишние пробелы в начале и в конце. С помощью функции TRIM() можно удалить лишние пробелы:
|
UPPER(text) | Возвращает символьное выражение, где все символы переведены в символы верхнего регистра. | Набор данных с местоположениями негосударственных учреждений, который содержит полные названия организаций и их аббревиатуры, если они есть. Аббревиатуры можно привести к общему виду, если сделать все символы с заглавной буквы с помощью функции UPPER():
|
VALUE(text, [format]) | Конвертирует текст в число.
Примечание:Вложение других функций в функции VALUE() может дать непредсказуемые результаты, если format не предоставлен. Поэтому рекомендуется указывать format при использовании функции VALUE(). Функция VALUE() в текущий момент не поддерживает конвертацию текста в отрицательные числа. | В наборе данных о магазинах розничной продажи есть поле категорий с данными об объёме прибыли. Поле Revenue можно конвертировать в числовое с помощью функции VALUE().
|
Числовые функции
Большинство числовых функций использует числовые входные данные и выдаёт в результате числовые данные. Числовые функции чаще всего используются в сочетании с другими функциями или как метод трансформирования данных.
Входными числами могут быть либо числовые константы, либо числовые поля. В некоторых примерах ниже в качестве входных данных используются числа, а не поля, что лучше объясняет работу функции.
Синтаксис | Описание | Пример |
---|---|---|
ABS(number) | Возвращает абсолютное значение (по модулю). |
|
AVG(number) | Возвращает среднее значение. |
|
CEILING(number) | Округляет числа в большую сторону до ближайшего целого числа. |
|
COS(number) | Возвращает тригонометрический косинус указанного угла, в радианах. Следующее выражение может использоваться для конвертации градусов в радианы:
|
|
FLOOR(number) | Округляет числа в меньшую сторону до ближайшего целого числа. |
|
LN(number) | Возвращает натуральный логарифм определенного выражения с плавающей точкой. Натуральный логарифм использует константу e как основание (приблизительно 2,72). |
|
LOG(number) | Вычисляет логарифм числа для указанного основания. Основание по умолчанию – 10. |
|
MAX(number) или MAX(date) | Возвращает максимальное значение. |
|
MIN(number) или MIN(date) | Возвращает минимальное значение. |
|
PERCENTTOTAL(number) | Вычисляет процент каждого значения поля, используя общее значение поля. |
|
POWER(number, power) | Возвращает значение выражения, возведенного в указанную степень. |
|
ROUND(number, num_digits) | Округляет числовые значения до указанного числа знаков.
|
|
SIN(number) | Возвращает тригонометрический синус указанного угла, в радианах. Следующее выражение может использоваться для конвертации градусов в радианы:
|
|
STDEV(number) | Среднеквадратическое отклонение числового поля. |
|
SUM(number) | Возвращает суммарное значение. |
|
TAN(number) | Возвращает тангенс входного выражения. Следующее выражение может использоваться для конвертации градусов в радианы:
|
|
Функции дат
Функции дат могут использовать поля дат, текст или могут не требовать входных данных. Это зависит от функции. Функция DATEVALUE() может использоваться для замещения поля даты в функции DATEDIF() или TIMEDIF().
Примечание:
Поля Дата/Время, использующиеся в DATEDIF() и DATEADD() должны быть в формате, включающем дату (другими словами, либо дату и время, либо только дату). Поля Дата/Время, содержащие только время не принимаются.
Поля Дата/Время, использующиеся в TIMEDIF(), должны быть в формате, включающем время (другими словами, либо дату и время, либо только время). Поля Дата/Время, содержащие только дату не принимаются.
Поддерживаются следующие разделители дат: точка (.), тире (-) и косая черта (/).
Синтаксис | Описание | Пример |
---|---|---|
DATE(year, month, day, [hour, minute, second], [AM/PM]) | Создаёт поле даты/времени при помощи трёх или более отдельных полей или значений. Приемлемы следующие спецификации:
Примечание:Все входные поля могут быть числовыми или текстовыми, кроме параметра AM/PM. Числа должны быть целыми. Две цифры года должны быть строками. При использовании функции DATE() с набором данных базы данных, если вы указали какой-нибудь параметр времени (hour, minute или second), вы должны ввести входное значение для всех параметров времени. | Набор данных ресторанов содержит текстовые поля, содержащие время и даты последних проверок их состояния. Поле даты проверок можно создать при помощи функции DATE():
Примечание:Результирующие даты в этом примере будут в 24-часовом формате. Чтобы использовать 12-часовой формат, надо указывать AM или PM. Этот же пример функции можно записать как DATE(2016, Month, Day, Hour, Min, 00, "AM"). |
TIME(hour, minute, second) | создаёт поле даты/времени при помощи трёх отдельных полей или значений. Приемлемы следующие спецификации:
Примечание:Все входные поля могут быть числовыми или текстовыми, кроме параметра AM/PM. Числа должны быть целыми. | Набор данных записей больниц включает время поступления пациента. Поле времени для записи можно создать при помощи функции TIME():
Примечание:Результирующее время в этом примере будет в 24-часовом формате. Чтобы использовать 12-часовой формат, надо указывать AM или PM. Этот же пример функции можно записать как TIME(Hour, Min, 00, "AM"). |
DATEADD(date, integer, [unit]) | Добавляет указанное количество времени к датам во входном поле.
Если единицы измерения не указаны, будет использоваться "D". Если к полю даты/времени добавляются месяцы, на выходе будет такой же день месяца, независимо от количества дней в месяце. Если такой день месяца является недопустимым в новом месяце, используется последний день месяца. Например, если при вычислении ко входному полю добавляется три месяца, а одной из исходных дат является 30 ноября 2021, выходное значение 30 февраля 2022 является недопустимым. Результат будет записан как 28 февраля 2022, т.к. 2022 год не високосный. | Отдел здравоохранения отвечает за хранение записей о вакцинации пациентов на своем участке. Определенная вакцина состоит из двух доз с интервалом введения не менее 60 и не более 180 дней. DATEADD() можно использовать для создания полей с датой, когда пациенты могут получить вторую дозу вакцины, и предельной датой второй прививки. Дата доступности вакцинации:
Последняя дата:
|
TIMEADD(time, integer, unit) | Добавляет указанное количество времени ко времени во входном поле.
| Набор данных содержит даты и время в формате Всемирного координированного времени (UTC), его необходимо конвертировать в формат Центрального поясного времени (CST). Поле даты/времени со временем в формате CST можно создать при помощи функции TIMEADD():
|
DATEDIF(start_date, end_date, [unit]) | Вычисляет, сколько времени прошло между двумя датами. start_date должно произойти до end_date, иначе будет выведено отрицательное значение.
Если единицы измерения не указаны, будет использоваться "D". Округление проводится над результатами каждой единицы следующим образом:
| Набор данных ресторанов содержит даты последних проверок их состояния. С помощью функции DATEDIF() можно вычислить количество дней, прошедших между проверками: Пример 1:
Пример 2:
Пример 3:
|
TIMEDIF(start_time, end_time, [unit]) | Вычисляет, сколько времени прошло между двумя значениями даты/времени. start_time должно произойти до end_time, иначе будет выведено отрицательное значение.
Если единицы измерения не указаны, будет использоваться "ss". Округление проводится над результатами каждой единицы следующим образом:
| Набор данных записей операций в больнице включает время начала и время окончания операции. Время, проведенное пациентом на операции можно вычислить с использованием функции TIMEDIF():
|
DATEVALUE(date_text, [format]) | Конвертирует текст в дату.
Примечание:Вложение других функций в функции DATEVALUE() может дать непредсказуемые результаты, если format не предоставлен. Поэтому рекомендуется указывать format при помещении функций внутри DATEVALUE(). Даты, указанные без разделителей (например, "10312016"), будут рассматриваться как миллисекунды, если не предоставлен format. Поэтому рекомендуется указывать формат при вводе дат без разделителей. Формат данных с разделителями, но без указанного format, будет автоматически распознаваться. Если формат невозможно распознать, по умолчанию будет применяться "MM-DD-YY". Функция DATEVALUE() может считывать только текст, введенный в кавычках, или строковые поля. Поле даты/времени не может использоваться в качестве входных данных функции DATEVALUE(). | Набор данных ресторанов содержит даты последних проверок их состояния. Можно вычислить количество дней, прошедших между проверками, используя функцию DATEVALUE() для указания текущей даты:
Дату и время можно отформатировать несколькими способами. Ниже приведено несколько примеров различных способов форматирования текста в даты:
|
NOW() | Возвращает текущую дату и время в формате дата/время. Время записывается в формате Всемирного координированного времени (UTC). | Набор данных ресторанов содержит даты последних проверок их состояния. Можно вычислить количество дней, прошедших между проверками, используя функцию NOW() для указания текущей даты:
|
Логические функции
Логические функции используют строковые или числовые входные данные и выдают в результате строковые или числовые данные. Входные данные могут быть либо буквенными (текст, помещенный в кавычки, или числа-константы), либо значениями поля. В следующей таблице в качестве примеров используются комбинации полей и буквенных значений, а также примеры значений, которые могут находиться в заданных полях.
Синтаксис | Описание | Пример |
---|---|---|
AND(condition,condition, ...) | Тестирует два или более условий и возвращает TRUE, если соблюдаются все условия. AND() должно использоваться в параметре condition функции IF().
| Набор данных содержит средний возраст людей, живущих в каждом квартале. Исследователь рынка хочет узнать, в каких кварталах преобладает молодёжь. Кварталы, в котором средний возраст населения – это дети нулевых годов, можно найти путём комбинации функций IF() и AND():
|
IF(condition, TRUE_expression, [FALSE_expression]) | Тестирует условие и возвращает значение TRUE или FALSE, основанное на результате.
TRUE_expression и FALSE_expression могут быть любыми корректными условиями, включающими вложенную функцию IF(). Тип данных для TRUE_expression и FALSE_expression должны быть одинакового типа (например, обе строчки или оба числа). | Набор данных содержит поля с доходами и расходами, которые можно использовать для выявления статуса магазинов (прибыльные или убыточные). Статус каждого магазина можно найти, если применить функцию IF():
|
ISNULL(field)* | Проверяет, равны ли значения в поле значению null. Выходное значение 0 назначается, когда проверяемое значение не равно null, а выходное значение 1 назначается, когда проверяемое значение равно null.
ISNULL() можно использовать сам по себе, либо в параметре condition функции IF(). | Набор данных содержит местоположения дорожных происшествий с участием велосипедистов, а также тип велосипедного маршрута на улице, где произошло столкновение. Если столкновение произошло на улице, где велодорожки нет, поле RouteType остается пустым. Набор данных можно обновить и заполнить значения null, используя комбинацию функций IF() и ISNULL():
|
ISNOTNULL(field)* | Проверяет, не равны ли значения в поле значению null. Выходное значение 0 назначается, когда проверяемое значение равно null, а выходное значение 1 назначается, когда проверяемое значение не равно null.
ISNOTNULL() можно использовать сам по себе, либо в параметре condition функции IF(). | Набор данных содержит местоположения дорожных происшествий с участием велосипедистов, а также тип велосипедного маршрута на улице, где произошло столкновение. Если столкновение произошло на улице, где велодорожки нет, поле RouteType остается пустым. Набор данных можно обновить и заполнить значения null, используя комбинацию функций IF() и ISNOTNULL():
|
OR(condition,condition, ...) | Тестирует два или более условий и возвращает TRUE, если соблюдается хотя бы одно условие. OR() должно использоваться в параметре condition функции IF().
| Набор данных c местоположениями преступлений в городе. Криминалисту требуется проанализировать встречаемость краж на фоне других преступлений. Чтобы сравнить кражи с другими преступлениями, аналитик сначала должен определить, является ли преступление кражей. Тип преступления можно определить используя комбинацию функций IF() и OR():
|
*Некоторые поля, в которых нет данных, можно настроить как пустые, а не как null. В таких случаях ISNULL() и ISNOTNULL() не вернет ожидаемых результатов. Следует использовать выражения field="" и field<>"" вместо ISNULL(field) и ISNOTNULL(field) соответственно.