Поделиться через


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

Область применения: SQL Server Analysis Services

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

Синтаксис

  
StructureColumn('structure column name')  

Аргументы

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

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

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

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

Замечания

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

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

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

Дополнительные сведения об использовании этой функции в инструкции DMX SELECT см. в статье SELECT FROM <model>. ВАРИАНТЫ (DMX) или СТРУКТУРА SELECT FROM<>. СЛУЧАИ.

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

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

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

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

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

Примеры

В приведенных ниже примерах используется следующая структура интеллектуального анализа данных. Обратите внимание, что она содержит столбцы вложенных таблиц 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 . Модель проверяет, был ли продукт приобретен по обычной цене .NOT``OnSale>. Этот запрос возвращает не только название продукта, но и размер приобретенной партии, который не указан в модели.

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)  

См. также

Справочник по функциям расширений интеллектуального анализа данных
Функции (расширение интеллектуального анализа данных)
Общие функции прогнозирования (расширение интеллектуального анализа данных)