Проверить соединение (Управление данными)

Сводка

Проверяет соединение между двумя слоями или таблицами, чтобы определить, есть ли у слоев или таблиц допустимые имена полей и поля 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—полное описание сообщения или предупреждения, включая информацию о возможных вариантах решения проблемы.

  • Кардинальность соединения (является ли она один-к-одному или один-ко многим) будет проверена в ходе работы этого инструмента. Записи из Присоединенной таблицы могут соответствовать нескольким записям входного слоя или представления таблицы. Аналогично нескольким записям из присоединенной таблицы может соответствовать одна запись во входном слое или представлении таблицы, соединение при этом будет один-ко-многим.

Синтаксис

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

Число записей, возвращаемое соединением между входными и присоединяемыми таблицами или слоями. Соединения один-ко-многим будут подсчитывать каждую сопоставленную пару записей. Для соединений один-ко-многим выходное количество строк может оказаться больше, чем число сопоставлений.

Длинное целое

Пример кода

ValidateJoin пример 1 (окно Python)

Пример скрипта окна Python для использования функции ValidateJoin в режиме прямого запуска.

import arcpy
arcpy.ValidateJoin_management("vegetation", "HOLLAND95", "vegtable", "HOLLAND95")
arcpy.AddJoin_management("vegetation", "HOLLAND95", "vegtable", "HOLLAND95")
ValidateJoin пример 2 (автономный скрипт)

Этот автономный скрипт описывает функцию 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")

Информация о лицензиях

  • Basic: Да
  • Standard: Да
  • Advanced: Да

Связанные разделы