StructureColumn (расширения интеллектуального анализа данных)

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

Синтаксис

StructureColumn('structure column name')

Аргументы

  • structure-column-name.
    Имя варианта или вложенной таблицы в столбце структуры интеллектуального анализа данных.

Тип результата

Возвращаемый тип зависит от типа столбца, указываемого параметром <structure column name>. Например, если указанный столбец структуры интеллектуального анализа данных содержит скалярное значение, то функция возвращает скалярное значение.

Если же столбец структуры содержит вложенную таблицу, то функция возвращает табличное значение. Затем его можно указать в предложении FROM вложенной инструкции SELECT.

Замечания

Эта функция полиморфна и может использоваться в любом месте инструкции, где допустимы выражения, включая список выражений инструкции SELECT, выражение WHERE или ORDER BY.

Имя столбца структуры интеллектуального анализа данных является строковым значением и поэтому должно быть заключено в одиночные кавычки. Например, StructureColumn('столбец 1'). Если несколько столбцов имеют одинаковые имена, то имя разрешается в контексте объемлющей инструкции SELECT.

На результаты, возвращаемые из запроса функцией StructureColumn оказывает влияние наличие фильтров, определенных для модели. Иными словами, фильтр модели определяет, какие из вариантов будут включены в модель интеллектуального анализа данных. Таким образом, запрос для столбца структуры может вернуть только те варианты, которые использовались в модели интеллектуального анализа данных. Пример кода, показывающего влияние фильтров для модели интеллектуального анализа данных на таблицы вариантов и вложенные таблицы, см. в подразделе «Примеры» данного раздела.

Дополнительные сведения об использовании этой функции в DMX-инструкции SELECT см. в разделах SELECT FROM <модель>.CASES (расширения интеллектуального анализа данных) и SELECT FROM <структура>.CASES.

Сообщения об ошибках

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

Пользователь "%{user/}" не имеет разрешения на детализацию до родительской структуры интеллектуального анализа данных модели "%{model/}".

Следующее сообщение об ошибке возникает в том случае, если указан недопустимый столбец структуры.

Столбец "%{structure-column-name/}" структуры интеллектуального анализа данных не найден в родительской структуре "%{structure/}" в текущем контексте (строка %{line/}, столбец %{column/}).

Примеры

В следующих примерах используется следующая структура интеллектуального анализа данных. Обратите внимание. что она содержит столбцы вложенных таблиц Products и Hobbies. Вложенная таблица в столбце Hobbies содержит единственный столбец, который используется в качестве ключа для вложенной таблицы. Вложенная таблица в столбце Products имеет сложную структуру и состоит из ключевого столбца и других столбцов для ввода. Следующие примеры иллюстрируют, каким образом в структуре интеллектуального анализа данных можно создать множество различных столбцов, даже если все они моделью не используются. Некоторые из этих столбцов могут не пригодиться для выявления закономерностей на уровне модели, но могут оказаться весьма полезными для детализации.

CREATE MINING STRUCTURE [MyStructure] 
(
CustomerName TEXT KEY,
Occupation TEXT DISCRETE,
Age LONG CONTINUOUS,
MaritalStatus TEXT DISCRETE,
Income LONG CONTINUOUS,
Products  TABLE
 (
    ProductNameTEXT KEY,
    Quantity LONG CONTINUOUS,
    OnSale BOOLEAN  DISCRETE
)
 Hobbies  TABLE
 (
    Hobby KEY
 ))

Затем на основе созданной структуры создадим модель интеллектуального анализа данных с использованием следующего примера кода.

ALTER MINING STRUCTURE [MyStructure] ADD MINING MODEL [MyModel] (
CustomerName,
Age,
MaritalStatus,
Income PREDICT,
Products 
(
ProductName
) WITH FILTER(NOT OnSale)
) USING Microsoft_Decision_Trees 
WITH FILTER(EXISTS (Products))

Образец запроса 1. Возвращает столбец из структуры интеллектуального анализа данных

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

SELECT CustomerName, Age, StructureColumn(‘Occupation’) FROM MyModel.CASES 
WHERE Age > 30

Обратите внимание, что фильтрация строк для ограничения числа вариантов до заказчиков возрастом более 30 лет выполняется на уровне модели. Поэтому данное выражение не вернет те из вариантов, которые включены в данные структуры, но не используются в модели. Поскольку условие фильтра, используемого при создании модели (EXISTS (Products)) ограничивает число вариантов до тех заказчиков, которые уже приобретали продукты, в структуре могут оказаться варианты, которые не будут возвращены этим запросом.

Образец запроса 2. Применение фильтра к столбцу структуры

Следующий образец запроса возвращает не только столбцы модели CustomerName и Age и вложенную таблицу Products, но и значение столбца Quantity вложенной таблицы, которая не является частью модели.

SELECT CustomerName, Age,
(SELECT ProductName, StructureColumn(‘Quantity’) FROM Products) FROM MA.CASES 
WHERE StructureColumn(‘Occupation’) = ‘Architect’

При рассмотрении этого примера обратите внимание, что к столбцу структуры фильтр применен для ограничения числа вариантов до клиентов, имеющих род деятельности «Архитектор» (WHERE StructureColumn(‘Occupation’) = ‘Architect’). Поскольку условие фильтра модели всегда применяется к вариантам при создании модели, в модель попадут только те модели, которые содержат в таблице Products как минимум одну строку, включенную в число вариантов модели. Таким образом, будут применен и фильтр для вложенной таблицы Products, и фильтр для варианта (‘Occupation’).

Образец запроса 3. Выборка столбцов из вложенной таблицы

Следующий пример запроса возвращает имена заказчиков, которые были использованы в модели в качестве обучающих вариантов. Для каждого из заказчиков запрос возвращает также вложенную таблицу, содержащую подробные сведения о заказах. Не смотря на то, что столбец ProductName включен в модель, она не может использовать значение столбца ProductName. Модель только проверяет, что продукт был приобретен по обычной цене (NOTOnSale). Этот запрос возвращает не только название продукта, но и размер партии, который не входит в состав модели.

SELECT CustomerName,  
(SELECT ProductName, StructureColumn('Quantity')FROM Products) 
FROM MyModel.CASES

Обратите внимание, столбец ProductName или Quantity не может быть возвращен, если для модели интеллектуального анализа данных не включена детализация.

Образец запроса 4. Фильтрация по столбцам вложенной таблицы и их возврат

Три следующих образцов запросов возвращают вариант и столбцы вложенной таблицы, включенные в структуру интеллектуального анализа данных, но не являющиеся частью модели. К модели уже применен фильтр по наличию продуктов OnSale, но данный запрос добавит еще один фильтр по столбцу структуры интеллектуального анализа данных Quantity.

SELECT CustomerName, Age, StructureColumn('Occupation'), 
(SELECT ProductName, StructureColumn('Quantity') FROM Products) 
FROM MyModel.CASES 
WHERE EXISTS (SELECT * FROM Products WHERE StructureColumn('Quantity')>1)