Сводка
Проверяет соединение между двумя слоями или таблицами, чтобы определить, есть ли у слоев или таблиц допустимые имена полей и поля Object ID, есть ли сопоставленные записи при соединении, а также другие свойства соединения.
Этот инструмент не создает соединение, он только анализирует потенциальное соединение. Соединение, которое проверяется с помощью этого инструмента, можно создать с помощью инструментов Добавить соединение или Соединение полей. Этот инструмент выдает результаты проверки соединения в виде сообщений и, дополнительно, в виде выходной таблицы.
Использование
Этот инструмент будет создавать сообщения, характеризующие проверяемое соединения, включающие следующее:
- Число строк и число совпадений проверяемого соединения между входным слоем или представлением таблицы и присоединяемой таблицей. Если сопоставленных записей между ними не найдено, появится предупреждение. Число строк и число совпадений также будут представлены в результатах работы инструмента.
- Если у соединяемых таблиц нет Object ID, появится предупреждение.
- Кардинальность соединения (если возможны результаты один-к-одному и один-ко-многим).
- Если у соединяемых полей используются недопустимые начальные символы или недопустимые символы где-то в других частях имен, появится предупреждение.
- Если соединяемые поля используют зарезервированные ключевые слова SQL, появится предупреждение.
- Соединяемые поля не проиндексированы или не содержат атрибутивный индекс. Индексы полей поддерживают оптимальную производительность для некоторых форматов данных.
- Соединяемые таблицы находятся в одной рабочей области. Когда входной слой или представление таблицы и соединяемая таблица хранятся в одной рабочей области или базе данных, то соединение будет выполняться существенно быстрее. Соединения между таблицами в разных базах данных технически возможны, но производительность при этом будет низкой, поскольку для выполнения соединения нельзя будет использовать саму базу данных.
Этот инструмент также может создать дополнительную выходную таблицу со списком проблем, выявленных в проверенном соединении. Выходная таблица будет иметь следующие поля:
- TYPE—ключевое слово, которое используется для выявления выбранной характеристики или явления, найденного в проверенном соединении. К значениям относятся следующие:
Ключевое слово Описание GPM_INVALID_CHARACTER_IN_NAME
В названии поля содержится недопустимый символ.
GPM_INVALID_FIRST_CHARACTERS_MSG
Первый символ в названии поля недопустим.
GPM_RESERVED_SQL_KEYWORD
В имени поля содержатся зарезервированные ключевые слова SQL.
GPM_NO_MATCH_JOIN
При соединении не найдено сопоставлений.
GPM_NO_OBJECTID_JOIN
Таблица или слой не имеет поля Object ID.
GPM_NOT_INDEX_FIELD
Поле не проиндексировано.
DIFFERENT_WORKSPACE
Таблицы хранятся в разных рабочих областях или базах данных.
- TABLE_NAME—имя таблицы, для которой было выявлено сообщение или предупреждение при проверке.
- FIELD_NAME—имя поля во входном слое или представлении таблицы или в присоединяемой таблице, для которого было выявлено сообщение или предупреждение при проверке.
- DESC—полное описание сообщения или предупреждения, включая информацию о возможных вариантах решения проблемы.
- TYPE—ключевое слово, которое используется для выявления выбранной характеристики или явления, найденного в проверенном соединении. К значениям относятся следующие:
Кардинальность соединения (является ли она один-к-одному или один-ко многим) будет проверена в ходе работы этого инструмента. Записи из Присоединенной таблицы могут соответствовать нескольким записям входного слоя или представления таблицы. Аналогично нескольким записям из присоединенной таблицы может соответствовать одна запись во входном слое или представлении таблицы, соединение при этом будет один-ко-многим.
Синтаксис
ValidateJoin(in_layer_or_view, in_field, join_table, join_field, {output_msg})
Parameter | Объяснение | Тип данных |
in_layer_or_view | Слой или представление таблицы, к которым будет присоединяться таблица, которую нужно проверить. | Mosaic Layer; Raster Layer; Table View |
in_field | Поле входного слоя или представления таблицы, на котором будет основано соединение. | Field |
join_table | Таблица или представление таблицы, которые будут присоединяться к входному слою или представлению таблицы, которую нужно проверить. | Mosaic Layer; Raster Layer; Table View |
join_field | Поле соединяемой таблицы, содержащее значения, на которых будет основываться соединение. | Field |
output_msg (Дополнительный) | Выходная таблица, содержащая сообщения о проверке в табличном формате. | Table |
Производные выходные данные
Name | Объяснение | Тип данных |
match_count | Количество уникальных записей из входного слоя или таблицы, для которых есть сопоставленная запись в присоединяемом слое или таблице. | Длинное целое |
row_count | Число записей, возвращаемое соединением между входными и присоединяемыми таблицами или слоями. Соединения один-ко-многим будут подсчитывать каждую сопоставленную пару записей. Для соединений один-ко-многим выходное количество строк может оказаться больше, чем число сопоставлений. | Длинное целое |
Пример кода
Пример скрипта окна Python для использования функции ValidateJoin в режиме прямого запуска.
import arcpy
arcpy.ValidateJoin_management("vegetation", "HOLLAND95", "vegtable", "HOLLAND95")
arcpy.AddJoin_management("vegetation", "HOLLAND95", "vegtable", "HOLLAND95")
Этот автономный скрипт описывает функцию ValidateJoin как часть рабочего потока для присоединения таблицы к классу объектов.
# Name: AttributeJoin.py
# Purpose: Join a table to a feature class and find one-to-many matches
# Import system modules
import arcpy
# Set environment settings
arcpy.env.workspace = "C:/data/Habitat_Analysis.gdb"
arcpy.env.qualifiedFieldNames = False
# Set local variables
inFeatures = "vegtype"
joinTable = "vegtable"
joinField = "HOLLAND95" # both tables have HOLLAND95 field
outFeatures = "Vegtype_Joined"
# Join the feature layer to a table
val_res = arcpy.ValidateJoin_management(inFeatures, joinField, joinTable, joinField)
matched = int(val_res[0])
row_count = int(val_res[1])
print(arcpy.GetMessages()) # Tool messages about the Join
# Validate the join returns matched rows before proceeding
if matched >= 1:
joined = arcpy.AddJoin_management(inFeatures, joinField, joinTable, joinField)
# Copy the joined layer to a new permanent feature class
arcpy.CopyFeatures_management(joined, outFeatures)
print(f"Output Features: {outFeatures} had matches {matched} and created {row_count} records")
Environments
Информация о лицензиях
- Basic: Да
- Standard: Да
- Advanced: Да