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

Сводка

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Синтаксис

MakeQueryTable(in_table, out_table, in_key_field_option, {in_key_field}, {in_field}, {where_clause})
ParameterОбъяснениеТип данных
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Указывает поля в параметре Ключевые поля, которые будут использоваться для уникальной идентификации строк в выходной таблице. Для идентификации строк выходной таблицы может служить одно поле или несколько полей. Если в списке ключевых полей нет указанных полей, будет автоматически применена опция Создать ключевое поле (в Python ADD VIRTUAL_KEY_FIELD).
  • 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: Да

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