Создать таблицу запроса (Управление данными)

Краткая информация

Применяет SQL-запрос к базе данных и представляет результаты в виде слоя или в виде таблицы. Можно использовать запрос для соединения таблиц или вывода поднабора полей или строк из исходных данных в базе данных.

Этот инструмент работает с данными из базы геоданных или из подключения к базе данных через OLE.

Использование

  • Слой, созданный данным инструментом, является временным и будет удален по окончании сеанса редактирования, если вы не сохраните документ карты.

  • Все входные классы объектов или таблицы должны быть из одной входной рабочей области.

  • Если в перечень полей добавляется поле Shape, результатом будет слой; в противном случае результатом будет представление таблицы.

  • Если результатом является слой, он может быть сохранен в файл слоя с помощью инструмента Сохранить в файл слоя или в класс пространственных объектов с помощью инструмента Копировать объекты.

  • Последовательность полей в списке полей указывает на последовательность, в которой поля появятся в выходном слое или представлении таблицы.

  • Вы можете указать опцию использования ключевого поля и список ключевых полей. Эта информация определяет, как определяются строки, и используется для добавления динамически генерируемого поля Object ID в данные. Без поля Object ID, выборки не будут поддерживаться.

  • Из ключевых полей можно выбрать несколько полей, если комбинация этих полей необходима для определения уникальных значений.

  • Если используется SQL-выражение, но не выдает соответствующих записей, выходной класс объектов будет пустым.

  • Классы пространственных объектов будут соединены, но список полей должен содержать не более одного поля типа геометрии.

  • Более подробно о синтаксисе параметра Выражение см. раздел Режим SQL.

  • Если входные таблицы из файловой базы геоданных, соединение таблиц в целом происходит в последовательности, перечисленной в параметре Входные таблицы. Например, если Таблица1 находится в списке до Таблицы2, Таблица2 будет присоединена путем получения строки из Таблицы1, затем получения соответствующих строк из Таблицы2. Однако, если это приведет к построению запроса Таблицы2 на не проиндексированном поле, а возвращение порядка приведет к построению запроса Таблицы1 на проиндексированном поле, порядок будет изменен с целью повышения производительности. Это единственная логика оптимизации запроса при использовании данных файловой базы геоданных с этим инструментом. В общем, соединения в файловой базе геоданных наиболее эффективны, когда они имеют кардинальность один-ко-многим и один-к-одному.

Параметры

ПодписьОписаниеТип данных
Входные таблицы

Имя таблицы или таблиц, которые будут использоваться в запросе. Если перечислено несколько таблиц, то с помощью параметра Выражение можно установить правила их соединения.

Входная таблица может быть из базы геоданных или из подключения к базе данных.

Table View; Raster Layer
Имя таблицы

Имя слоя или представления таблицы, которое будет создано.

Table View; Raster Layer
Опции ключевых полей

Указывает, как будет создаваться поле Object ID для запроса. Для слоев и представлений таблиц в ArcGIS необходимо поле Object ID. Поле Object ID - целочисленное поле, значения которого используются для уникальной идентификации строк данных.

  • Использовать ключевые поляУказывает поля в параметре Ключевые поля, которые будут использоваться для уникальной идентификации строк в выходной таблице. Для идентификации строк выходной таблицы может служить одно поле или несколько полей. Если в списке ключевых полей нет указанных полей, будет применена опция Создать ключевое поле. Это значение по умолчанию
  • Создать ключевое полеЕсли ключевые поля не были заданы, то будет создано поле Object ID, которое однозначно идентифицирует каждую строку в выходной таблице.
  • Нет ключевого поляПоле Object ID не будет создано. Для вида таблицы не будут поддерживаться выборки.
    Примечание:

    Если уже существует поле Object ID, оно будет использоваться, даже если эта опция выбрана.

  • Использовать ключевые поляУказывает поля в параметре in_key_field, которые будут использоваться для уникальной идентификации строк в выходной таблице. Для идентификации строк выходной таблицы может служить одно поле или несколько полей. Если в списке ключевых полей нет указанных полей, будет применена опция ADD VIRTUAL_KEY_FIELD.
  • Создать ключевое полеЕсли ключевые поля не были заданы, то будет создано поле Object ID, которое однозначно идентифицирует каждую строку в выходной таблице.
  • Нет ключевого поляПоле Object ID не будет создано. Для вида таблицы не будут поддерживаться выборки.
    Примечание:

    Если уже существует поле Object ID, оно будет использоваться, даже если эта опция выбрана.

String
Ключевые поля
(Дополнительный)

Поле или комбинация полей, которые могут быть использованы для идентификации строки в запросе. Этот параметр будет использоваться, когда параметр Опции ключевых полей задан как Использовать ключевые поля.

Field
Поля
(Дополнительный)

Поля, которые будут включены в результирующий слой или представление таблицы. Если для поля установлен псевдоним, то именно он будет отображаться. Если не заданы поля, будут включены все поля из входной таблицы. Если в перечень полей добавляется поле Shape, результатом будет слой; в противном случае результатом будет представление таблицы.

Value Table
Выражение
(Дополнительный)

SQL-выражение, использованное для выбора поднабора записей.

SQL Expression

arcpy.management.MakeQueryTable(in_table, out_table, in_key_field_option, {in_key_field}, {in_field}, {where_clause})
ИмяОписаниеТип данных
in_table
[in_table,...]

Имя таблицы или таблиц, которые будут использоваться в запросе. Если указано несколько таблиц, с помощью параметра where_clause можно задать правила их соединения.

Входная таблица может быть из базы геоданных или из подключения к базе данных.

Table View; Raster Layer
out_table

Имя слоя или представления таблицы, которое будет создано.

Table View; Raster Layer
in_key_field_option

Указывает, как будет создаваться поле Object ID для запроса. Для слоев и представлений таблиц в ArcGIS необходимо поле Object ID. Поле Object ID - целочисленное поле, значения которого используются для уникальной идентификации строк данных.

  • USE_KEY_FIELDSУказывает поля в параметре in_key_field, которые будут использоваться для уникальной идентификации строк в выходной таблице. Для идентификации строк выходной таблицы может служить одно поле или несколько полей. Если в списке ключевых полей нет указанных полей, будет применена опция ADD VIRTUAL_KEY_FIELD.
  • ADD_VIRTUAL_KEY_FIELDЕсли ключевые поля не были заданы, то будет создано поле Object ID, которое однозначно идентифицирует каждую строку в выходной таблице.
  • NO_KEY_FIELDПоле Object ID не будет создано. Для вида таблицы не будут поддерживаться выборки.
    Примечание:

    Если уже существует поле Object ID, оно будет использоваться, даже если эта опция выбрана.

String
in_key_field
[in_key_field,...]
(Дополнительный)

Поле или комбинация полей, которые могут быть использованы для идентификации строки в запросе. Этот параметр используется только, если параметр in_key_field_option задан как USE_KEY_FIELDS.

Field
in_field
[[field, {alias}],...]
(Дополнительный)

Поля, которые будут включены в результирующий слой или представление таблицы. Если для поля установлен псевдоним, то именно он будет отображаться. Если не заданы поля, будут включены все поля из входной таблицы. Если в перечень полей добавляется поле Shape, результатом будет слой; в противном случае результатом будет представление таблицы.

Value Table
where_clause
(Дополнительный)

SQL-выражение, использованное для выбора поднабора записей.

SQL Expression

Пример кода

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

В следующем скрипте окна Python показано, как используется функция MakeQueryTable в режиме прямого запуска.

import arcpy
arcpy.env.workspace = "C:/data/data.gdb"
arcpy.management.MakeQueryTable(["Counties","codemog"], "queryout", "ADD_VIRTUAL_KEY_FIELD", "",
                                [["Counties.OBJECTID", 'ObjectID'], ["Counties.NAME", 'Name'],
                                 ["codemog.Males", 'Males'], ["codemog.Females", 'Females']],
                                "Counties.FIPS = codemog.Fips and Counties.STATE_NAME = 'California'")
MakeQueryTable, пример 2 (автономный скрипт)

Следующий скрипт является примером использования функции MakeQueryTable в автономном режиме Python.

# MakeQueryTableOLEDB.py
# Description: Create a query table from two OLE DB tables using a limited set of
#               fields and establishing an equal join.
 
# Import system modules
import arcpy
 
# Local variables...
tableList = ["c:/Connections/balrog.odc/vtest.COUNTIES",\
             "c:/Connections/balrog.odc/vtest.CODEMOG"]

fieldList = [["vtest.COUNTIES.OBJECTID", 'ObjectID'], ["vtest.COUNTIES.NAME", 'Name']\
             ["vtest.CODEMOG.Males", 'Males'], ["vtest.CODEMOG.Females", 'Females']]
whereClause = "vtest.COUNTIES.FIPS = vtest.CODEMOG.Fips" +\
              "and vtest.COUNTIES.STATE_NAME = 'California'"
keyField = "vtest.COUNTIES.OBJECTID"
lyrName = "CountyCombined"

# Make Query Table...
arcpy.management.MakeQueryTable(tableList, lyrName,"USE_KEY_FIELDS", keyField, fieldList, whereClause)

# Print the total rows
print(arcpy.management.GetCount(lyrName))
 
# Print the fields
fields = arcpy.ListFields(lyrName)
for field in fields:
    print(field.name)

# Save as a dBASE file
arcpy.management.CopyRows(lyrName, "C:/temp/calinfo.dbf")