Compartilhar via


StructureColumn (DMX)

Retorna o valor da coluna de estrutura que corresponde ao caso especificado ou o valor de tabela para uma tabela aninhada no caso especificado.

Sintaxe

StructureColumn('structure column name')

Argumentos

  • nome da coluna da estrutura.
    O nome de uma coluna da estrutura de mineração de tabela aninhada ou caso.

Tipo de resultado

O tipo que é retornado depende do tipo da coluna mencionada no parâmetro <nome da coluna da estrutura>. Por exemplo, se a coluna da estrutura de mineração mencionada contiver um valor escalar, a função retornará um valor escalar.

Se a coluna da estrutura de mineração mencionada for uma tabela aninhada, a função retornará um valor de tabela. O valor de tabela retornado pode ser usado na cláusula FROM de uma instrução sub-SELECT.

Comentários

Esta função é polimórfica e pode ser usada em qualquer lugar de uma instrução que permite expressões, incluindo uma lista de expressões SELECT, uma expressão de condição WHERE e uma expressão ORDER BY.

O nome da coluna na estrutura de mineração é um valor de cadeia de caracteres e, desse modo, deve estar entre aspas simples: por exemplo, StructureColumn('coluna 1'). Se houver várias colunas com o mesmo nome, o nome será resolvido no contexto da instrução SELECT de circunscrição.

Os resultados retornados de uma consulta que usa a função StructureColumn são afetados pela presença de qualquer filtro no modelo. Quer dizer, o filtro do modelo controla os casos que são incluídos no modelo de mineração. Desse modo, uma consulta na coluna de estrutura pode retornar somente os casos que foram usados no modelo de mineração. Consulte a seção Exemplos deste tópico para observar o exemplo de um código que mostra o efeito dos filtros de modelo de mineração nas tabelas de caso e em uma tabela aninhada.

Para obter mais informações sobre como usar esta função em uma instrução SELECT DMX, consulte SELECIONAR A PARTIR DE CASOS DE <modelo> (DMX) ou SELECT FROM <estrutura>.CASES.

Mensagens de erro

O erro de segurança a seguir ocorrerá se o usuário não tiver permissão de detalhamento na estrutura de mineração pai:

O usuário ‘%{user/}’ não tem permissão para detalhar na estrutura de mineração pai do modelo de mineração ‘%{model/}’.

A mensagem de erro a seguir será exibida se um nome de coluna de estrutura inválido for especificado:

A coluna de estrutura de mineração ‘%{nome da coluna de estrutura/}’ não foi encontrada na estrutura de mineração pai ‘%{structure/}’ no contexto atual (linha %{line/}, coluna %{column/}).

Exemplos

Usaremos a seguinte estrutura de mineração para obter estes exemplos. Observe que a estrutura de mineração contém duas colunas de tabela aninhada, Products e Hobbies. A tabela aninhada na coluna Hobbies tem uma única coluna que é usada como a chave para a tabela aninhada. A tabela aninhada na coluna Products é uma tabela aninhada complexa que tem uma coluna principal e outras colunas usadas para entrada. Os exemplos a seguir ilustram como uma estrutura de mineração de dados pode ser designada para incluir muitas colunas diferentes, mesmo que um modelo talvez não use todas as colunas. Algumas destas colunas podem não ser úteis no nível do modelo para generalizar padrões, mas podem ser muito úteis para detalhamento.

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
 ))

Em seguida, crie um modelo de mineração baseado na estrutura que você acabou de criar, usando o código de exemplo a seguir:

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))

Consulta de exemplo 1: Retornando uma coluna da estrutura de mineração

A consulta de exemplo a seguir retorna as colunas CustomerName e Age, que fazem parte do modelo de mineração. No entanto, a consulta também retorna a coluna Age, que faz parte da estrutura, mas não do modelo de mineração.

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

Observe que a filtragem de linhas para restringir os casos a clientes com mais de 30 anos ocorre no nível do modelo. Portanto, esta expressão não retornaria casos que estão incluídos nos dados da estrutura, mas não são usados pelo modelo. Como a condição de filtro usada para criar o modelo (EXISTS (Products)) restringe os casos somente aos clientes que adquiriram produtos, podem existir casos na estrutura que não são retornados por esta consulta.

Consulta de exemplo 2: Aplicando um filtro à coluna da estrutura

A consulta de exemplo a seguir retorna não só as colunas de modelo CustomerName e Age, e a tabela aninhada Products, mas também retorna o valor da coluna Quantity na tabela aninhada, que não faz parte do modelo.

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

Observe que, neste exemplo, um filtro é aplicado na coluna da estrutura para restringir os casos a clientes cuja ocupação é ‘Arquiteto’ (WHERE StructureColumn(‘Occupation’) = ‘Architect’). Como a condição de filtro do modelo sempre é aplicada aos casos quando o modelo é criado, somente os casos com pelo menos uma linha qualificada na tabela Products são incluídos nos casos do modelo. Desse modo, o filtro no tabela aninhada Products e o filtro no caso (‘Occupation’) são aplicados.

Consulta de exemplo 3: Selecionando colunas de uma tabela aninhada

A consulta de exemplo a seguir retorna os nomes dos clientes que foram usados como casos de treinamento do modelo. Para cada cliente, a consulta também retorna uma tabela aninhada que contém os detalhes de compra. Embora inclua a coluna ProductName , o modelo não usa o valor da coluna ProductName. O modelo só verifica se o produto foi adquirido por um preço normal (NOTOnSale). Esta consulta não só retorna o nome do produto, mas também retorna a quantidade adquirida, que não é incluída no modelo.

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

Não é possível retornar a coluna ProductName ou a coluna Quantity a menos que o detalhamento seja habilitado no modelo de mineração.

Consulta de exemplo 4: Filtrando e retornando colunas de tabela aninhada

A consulta de exemplo a seguir retorna as colunas de tabela aninhada e de caso que são incluídas na estrutura de mineração, mas não no modelo. O modelo já é filtrado na presença de produtos OnSale, mas esta consulta adiciona um filtro à coluna da estrutura de mineração, Quantity:

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