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