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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Параметры

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

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

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

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

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

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

Указывает, как будет создаваться поле ObjectID для запроса. Для слоев и представлений таблиц в ArcGIS необходимо поле ObjectID. Поле ObjectID - целочисленное поле, значения которого используются для уникальной идентификации строк данных. По умолчанию – Использовать ключевые поля (USE_KEY_FIELDS в Python).

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

    Обратите внимание, что если в списке полей уже существует поле типа ObjectID, оно будет использоваться как ObjectID, даже если эта опция выбрана.

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

Указывает, как будет создаваться поле ObjectID для запроса. Для слоев и представлений таблиц в ArcGIS необходимо поле ObjectID. Поле ObjectID - целочисленное поле, значения которого используются для уникальной идентификации строк данных. По умолчанию – Использовать ключевые поля (USE_KEY_FIELDS в Python).

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

    Обратите внимание, что если в списке полей уже существует поле типа ObjectID, оно будет использоваться как ObjectID, даже если эта опция выбрана.

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.MakeQueryTable_management(["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.MakeQueryTable_management(tableList, lyrName,"USE_KEY_FIELDS", keyField, fieldList, whereClause)

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

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

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

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

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