Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Recupera dados de um cubo especificado.
Sintaxe
[ WITH <SELECT WITH clause>
[ , <SELECT WITH clause>...n ]
]
SELECT
[ *
| ( <SELECT query axis clause>
[ , <SELECT query axis clause>,...n ]
)
]
FROM
<SELECT subcube clause>
[ <SELECT slicer axis clause> ]
[ <SELECT cell property list clause> ]
<SELECT WITH clause> ::=
( CELL CALCULATION <CREATE CELL CALCULATION body clause> )
| ( [ CALCULATED ] MEMBER <CREATE MEMBER body clause>)
| ( SET <CREATE SET body clause>)
| ( MEASURE = <measure body clause> )
<SELECT query axis clause> ::=
[ NON EMPTY ] Set_Expression
[ <SELECT dimension property list clause> ]
ON
Integer_Expression
| AXIS(Integer)
| COLUMNS
| ROWS
| PAGES
| SECTIONS
| CHAPTERS
<SELECT subcube clause> ::=
Cube_Name
| [NON VISUAL] (SELECT
[ *
| ( <SELECT query axis clause> [ ,
<SELECT query axis clause>,...n ] )
]
FROM
<SELECT subcube clause>
<SELECT slicer axis clause> )
<SELECT slicer axis clause> ::=
WHERE Tuple_Expression
<SELECT cell property list clause> ::=
[ CELL ] PROPERTIES CellProperty_Name
[ , CellProperty_Name,...n ]
<SELECT dimension property list clause> ::=
[DIMENSION] PROPERTIES
(DimensionProperty_Name
[,DimensionProperty_Name,...n ] )
| (LevelProperty_Name
[, LevelProperty_Name,...n ] )
| (MemberProperty_Name
[, MemberProperty_Name,...n ] )
Argumentos
Set_expression
Uma expressão válida de Expressões Multidimensionais (MDX) que retorna um conjunto.
Inteiro
Um inteiro entre 0 e 127.
Cube_Name
Uma string válida que fornece um nome de cubo.
Tuple_Expression
Uma expressão válida de Expressões Multidimensionais (MDX) que retorna uma tupla.
CellProperty_Name
Uma string válida que representa uma propriedade de célula.
DimensionProperty_Name
Uma cadeia válida que representa uma propriedade de dimensão.
LevelProperty_Name
Uma string válida que representa uma propriedade de nível.
MemberProperty_Name
Uma string válida que representa uma propriedade de membro.
Remarks
A <SELECT slicer axis clause> expressão deve conter membros em dimensões e hierarquias diferentes daquelas referenciadas nas expressões especificadas <SELECT query axis clause> .
Se um atributo no cubo for omitido das expressões especificadas <SELECT query axis clause> e do <SELECT slicer axis clause> valor, o membro padrão do atributo é implicitamente adicionado ao eixo do fatiador.
A opção NON VISUAL na instrução subselect permite filtrar membros mantendo os totais verdadeiros em vez dos totais filtrados. Isso permite que você consulte as dez maiores vendas (pessoas/produtos/regiões) e obtenha o total real de vendas de todos os membros consultados, em vez do valor total das vendas dos dez maiores devolvidos. Veja os exemplos abaixo para mais informações.
Membros calculados podem ser incluídos na <cláusula> do eixo de consulta SELECT sempre que a conexão foi aberta usando as subconsultas do parâmetro cadeia de conexão subqueries=1; veja Propriedades XMLA Suportadas (XMLA) e ConnectionString para uso de parâmetros. Um exemplo é fornecido sobre membros calculados em subseleções.
Autoexists
Quando dois ou mais atributos dessa dimensão são usados em uma instrução SELECT, o Analysis Services avalia as expressões dos atributos para garantir que os membros desses atributos estejam devidamente confinados para atender aos critérios de todos os outros atributos. Por exemplo, suponha que você esteja trabalhando com atributos da dimensão Geografia. Se você tem uma expressão que retorna todos os membros do atributo Cidade, e outra expressão que confina os membros do atributo País a todos os países/regiões da Europa, isso fará com que os membros da Cidade fiquem confinados apenas àquelas cidades que pertencem a países/regiões da Europa. Essa característica dos Serviços de Análise é chamada de Autoexiste e se aplica apenas a atributos na mesma dimensão. Autoexists só se aplica a atributos da mesma dimensão porque tenta impedir que os registros da dimensão excluídos em uma expressão de atributo sejam incluídos por outras expressões de atributo. Autoexists também pode ser entendido como a interseção resultante das diferentes expressões de atributos nos registros de dimensão. Veja os exemplos a seguir abaixo:
//Obtain the Top 10 best reseller selling products by Name
with member [Measures].[PCT Discount] AS '[Measures].[Discount Amount]/[Measures].[Reseller Sales Amount]', FORMAT_STRING = 'Percent'
set Top10SellingProducts as 'topcount([Product].[Model Name].children, 10, [Measures].[Reseller Sales Amount])'
set Preferred10Products as '
{[Product].[Model Name].&[Mountain-200],
[Product].[Model Name].&[Road-250],
[Product].[Model Name].&[Mountain-100],
[Product].[Model Name].&[Road-650],
[Product].[Model Name].&[Touring-1000],
[Product].[Model Name].&[Road-550-W],
[Product].[Model Name].&[Road-350-W],
[Product].[Model Name].&[HL Mountain Frame],
[Product].[Model Name].&[Road-150],
[Product].[Model Name].&[Touring-3000]
}'
select {[Measures].[Reseller Sales Amount], [Measures].[Discount Amount], [Measures].[PCT Discount]} on 0,
Top10SellingProducts on 1
from [Adventure Works]
O conjunto de resultados obtido é:
| Nome do Modelo + Medidas | Valor de vendas do revendedor | Valor do Desconto | Desconto de PCT |
|---|---|---|---|
| Montanha-200 | $14.356.699,36 | US$ 19.012,71 | 0,13% |
| Estrada-250 | $9.377.457,68 | $4.032,47 | 0,04% |
| Montanha-100 | $8.568.958,27 | $139.393,27 | 1,63% |
| Estrada-650 | $7.442.141,81 | $39.698,30 | 0,53% |
| Touring-1000 | $6.723.794,29 | $166.144,17 | 2.47% |
| Road-550-W | $3.668.383,88 | US$ 1.901,97 | 0,05% |
| Estrada-350-W | $3.665.932,31 | US$ 20.946,50 | 0,57% |
| Estrutura de Montanha HL | $3.365.069,27 | US$ 174,11 | 0,01% |
| Estrada-150 | $2.363.805,16 | US$ 0,00 | 0,00% |
| Touring-3000 | $2.046.508,26 | $79.582,15 | 3.89% |
O conjunto de produtos obtido parece ser o mesmo que Preferred10Products; portanto, verificando o conjunto Preferred10Products:
with member [Measures].[PCT Discount] AS '[Measures].[Discount Amount]/[Measures].[Reseller Sales Amount]', FORMAT_STRING = 'Percent'
set Top10SellingProducts as 'topcount([Product].[Model Name].children, 10, [Measures].[Reseller Sales Amount])'
set Preferred10Products as '
{[Product].[Model Name].&[Mountain-200],
[Product].[Model Name].&[Road-250],
[Product].[Model Name].&[Mountain-100],
[Product].[Model Name].&[Road-650],
[Product].[Model Name].&[Touring-1000],
[Product].[Model Name].&[Road-550-W],
[Product].[Model Name].&[Road-350-W],
[Product].[Model Name].&[HL Mountain Frame],
[Product].[Model Name].&[Road-150],
[Product].[Model Name].&[Touring-3000]
}'
select {[Measures].[Reseller Sales Amount], [Measures].[Discount Amount], [Measures].[PCT Discount]} on 0,
Preferred10Products on 1
from [Adventure Works]
De acordo com os resultados a seguir, ambos os conjuntos (Top10SellingProducts, Preferred10Products) são os mesmos
| Nome do Modelo + Medidas | Valor de vendas do revendedor | Valor do Desconto | Desconto de PCT |
|---|---|---|---|
| Montanha-200 | $14.356.699,36 | US$ 19.012,71 | 0,13% |
| Estrada-250 | $9.377.457,68 | $4.032,47 | 0,04% |
| Montanha-100 | $8.568.958,27 | $139.393,27 | 1,63% |
| Estrada-650 | $7.442.141,81 | $39.698,30 | 0,53% |
| Touring-1000 | $6.723.794,29 | $166.144,17 | 2.47% |
| Road-550-W | $3.668.383,88 | US$ 1.901,97 | 0,05% |
| Estrada-350-W | $3.665.932,31 | US$ 20.946,50 | 0,57% |
| Estrutura de Montanha HL | $3.365.069,27 | US$ 174,11 | 0,01% |
| Estrada-150 | $2.363.805,16 | US$ 0,00 | 0,00% |
| Touring-3000 | $2.046.508,26 | $79.582,15 | 3.89% |
Nos exemplos anteriores, criamos dois conjuntos: um como expressão calculada e outro como expressão constante. Esses exemplos ilustram as diferentes variantes do Autoexists.
Autoexists podem ser aplicados em profundidade ou superficialidade às expressões. A configuração padrão é profunda. O exemplo a seguir ilustrará o conceito de autoexistas profundos. No exemplo, estamos filtrando Top10SellingProducts pelo atributo [Produto].[Linha do Produto] para aqueles no grupo [Mountain]. Observe que os dois atributos (fatiador e eixo) pertencem à mesma dimensão, [Produto].
with member [Measures].[PCT Discount] AS '[Measures].[Discount Amount]/[Measures].[Reseller Sales Amount]', FORMAT_STRING = 'Percent'
set Top10SellingProducts as 'topcount([Product].[Model Name].children, 10, [Measures].[Reseller Sales Amount])'
// Preferred10Products set removed for clarity
select {[Measures].[Reseller Sales Amount], [Measures].[Discount Amount], [Measures].[PCT Discount]} on 0,
Top10SellingProducts on 1
from [Adventure Works]
where [Product].[Product Line].[Mountain]
Produz o seguinte conjunto de resultados:
| Nome do Modelo + Medidas | Valor de vendas do revendedor | Valor do Desconto | Desconto de PCT |
|---|---|---|---|
| Montanha-200 | $14.356.699,36 | US$ 19.012,71 | 0,13% |
| Montanha-100 | $8.568.958,27 | $139.393,27 | 1,63% |
| Estrutura de Montanha HL | $3.365.069,27 | US$ 174,11 | 0,01% |
| Montanha-300 | $1.907.249,38 | US$ 876,95 | 0,05% |
| Montanha-500 | $1.067.327,31 | US$ 17.266,09 | 1,62% |
| Mountain-400-W | $592.450,05 | US$ 303,49 | 0,05% |
| Quadro da Montanha LL | $521.864,42 | US$ 252,41 | 0,05% |
| ML Mountain Frame-W | $482.953,16 | US$ 206,95 | 0,04% |
| Quadro da Montanha ML | $343.785,29 | US$ 161,82 | 0,05% |
| Short feminino para montanhismo | US$ 260.304,09 | $6.675,56 | 2,56% |
No conjunto de resultados anterior, temos sete novatos na lista dos 10Produtos Maiores-Vendas, e Mountain-200, Mountain-100 e HL Mountain Frame subiram para o topo da lista. No conjunto de resultados anterior, esses três valores estavam intercalados
Isso é chamado de Deep Autoexists, pois o conjunto Top10SellingProducts é avaliado para atender às condições de fatiamento da consulta. Autoexists profundos significa que todas as expressões serão avaliadas para atender ao espaço mais profundo possível, após aplicar as expressões de segmentação de dados, as expressões de sub-seleção no eixo e assim por diante.
No entanto, alguém pode querer ser capaz de fazer a análise sobre o Top10SellingProducts como equivalente ao Preferred10Products, como no exemplo a seguir:
with member [Measures].[PCT Discount] AS '[Measures].[Discount Amount]/[Measures].[Reseller Sales Amount]', FORMAT_STRING = 'Percent'
set Top10SellingProducts as 'topcount([Product].[Model Name].children, 10, [Measures].[Reseller Sales Amount])'
set Preferred10Products as '
{[Product].[Model Name].&[Mountain-200],
[Product].[Model Name].&[Road-250],
[Product].[Model Name].&[Mountain-100],
[Product].[Model Name].&[Road-650],
[Product].[Model Name].&[Touring-1000],
[Product].[Model Name].&[Road-550-W],
[Product].[Model Name].&[Road-350-W],
[Product].[Model Name].&[HL Mountain Frame],
[Product].[Model Name].&[Road-150],
[Product].[Model Name].&[Touring-3000]
}'
select {[Measures].[Reseller Sales Amount], [Measures].[Discount Amount], [Measures].[PCT Discount]} on 0,
Preferred10Products on 1
from [Adventure Works]
where [Product].[Product Line].[Mountain]
Produz o seguinte conjunto de resultados:
| Nome do Modelo + Medidas | Valor de vendas do revendedor | Valor do Desconto | Desconto de PCT |
|---|---|---|---|
| Montanha-200 | $14.356.699,36 | US$ 19.012,71 | 0,13% |
| Montanha-100 | $8.568.958,27 | $139.393,27 | 1,63% |
| Estrutura de Montanha HL | $3.365.069,27 | US$ 174,11 | 0,01% |
Nos resultados acima, o fatiamento fornece um resultado que contém apenas aqueles produtos de Preferred10Products que fazem parte do grupo [Mountain] em [Product].[Product Line]; como esperado, porque Preferred10Products é uma expressão constante.
Esse conjunto de resultados também é entendido como autoexistência superficial. Isso ocorre porque a expressão é avaliada antes da cláusula de fatiamento. No exemplo anterior, a expressão era uma expressão constante para fins ilustrativos para introduzir o conceito.
O comportamento do Autoexists pode ser modificado no nível da sessão usando a propriedade da cadeia de conexão Autoexists. O exemplo a seguir começa abrindo uma nova sessão e adicionando a propriedade Autoexists=3 à cadeia de conexão. Você deve abrir uma nova conexão para fazer o exemplo. Depois que a conexão for estabelecida com a configuração Autoexist, ela permanecerá em vigor até que essa conexão seja concluída.
with member [Measures].[PCT Discount] AS '[Measures].[Discount Amount]/[Measures].[Reseller Sales Amount]', FORMAT_STRING = 'Percent'
set Top10SellingProducts as 'topcount([Product].[Model Name].children, 10, [Measures].[Reseller Sales Amount])'
//Preferred10Products set removed for clarity
select {[Measures].[Reseller Sales Amount], [Measures].[Discount Amount], [Measures].[PCT Discount]} on 0,
Top10SellingProducts on 1
from [Adventure Works]
where [Product].[Product Line].[Mountain]
O conjunto de resultados a seguir agora mostra o comportamento superficial do Autoexists.
| Nome do Modelo + Medidas | Valor de vendas do revendedor | Valor do Desconto | Desconto de PCT |
|---|---|---|---|
| Montanha-200 | $14.356.699,36 | US$ 19.012,71 | 0,13% |
| Montanha-100 | $8.568.958,27 | $139.393,27 | 1,63% |
| Estrutura de Montanha HL | $3.365.069,27 | US$ 174,11 | 0,01% |
O comportamento do Autoexists pode ser modificado usando o parâmetro AUTOEXISTS=[1|2|3] na cadeia de conexão; consulte Propriedades XMLA com suporte (XMLA) e ConnectionString para uso de parâmetro.
Exemplos
O exemplo a seguir retorna a soma dos Measures.[Order Quantity] membros, agregados nos primeiros oito meses do ano civil de 2003 contidos na Date dimensão, do cubo Adventure Works .
WITH MEMBER [Date].[Calendar].[First8Months2003] AS
Aggregate(
PeriodsToDate(
[Date].[Calendar].[Calendar Year],
[Date].[Calendar].[Month].[August 2003]
)
)
SELECT
[Date].[Calendar].[First8Months2003] ON COLUMNS,
[Product].[Category].Children ON ROWS
FROM
[Adventure Works]
WHERE
[Measures].[Order Quantity]
Para entender NÃO VISUAL, o exemplo a seguir é uma consulta de [Adventure Works] para obter os valores de [Valor de Vendas de Revendedor] em uma tabela onde as categorias de produtos são as colunas e os tipos de negócios de revendedor são as linhas. Note que os totais são fornecidos tanto para produtos quanto para revendedores.
A seguinte instrução SELECT:
select [Category].members on 0,
[Business Type].members on 1
from [Adventure Works]
where [Measures].[Reseller Sales Amount]
Produz os seguintes resultados:
| Tipo de Negócio + Categoria | Todos os produtos | Acessórios | Bicicletas | Roupa | Components |
|---|---|---|---|---|---|
| Todos os revendedores | US$ 80.450.596,98 | $571.297,93 | $66.302.381,56 | $1.777.840,84 | $11.799.076,66 |
| Loja de Bicicletas Especiais | $6.756.166,18 | $65.125,48 | $6.080.117,73 | $252.933,91 | $357.989,07 |
| Revendedor de Valor Adicionado | $34.967.517,33 | US$ 175.002,81 | $30.892.354,33 | $592.385,71 | $3.307.774,48 |
| Warehouse | $38.726.913,48 | $331.169,64 | $29.329.909,50 | $932.521,23 | $8.133.313,11 |
Para produzir uma tabela com dados apenas para os produtos Acessórios e Roupas, os revendedores de Valor Agregado e Revendedores de Armazém, mas mantendo os totais totais, poderiam ser escritos da seguinte forma usando NÃO VISUAL:
select [Category].members on 0,
[Business Type].members on 1
from NON VISUAL (Select {[Category].Accessories, [Category].Clothing} on 0,
{[Business Type].[Value Added Reseller], [Business Type].[Warehouse]} on 1
from [Adventure Works])
where [Measures].[Reseller Sales Amount]
Produz os seguintes resultados:
| Tipo de Negócio + Categoria | Todos os produtos | Acessórios | Roupa |
|---|---|---|---|
| Todos os revendedores | US$ 80.450.596,98 | $571.297,93 | $1.777.840,84 |
| Revendedor de Valor Adicionado | $34.967.517,33 | US$ 175.002,81 | $592.385,71 |
| Warehouse | $38.726.913,48 | $331.169,64 | $932.521,23 |
Para produzir uma tabela que totaliza visualmente as colunas, mas que para os totais de linha apresenta o verdadeiro total de todas as [Categoria], a seguinte consulta deve ser realizada:
select [Category].members on 0,
[Business Type].members on 1
from NON VISUAL (Select {[Category].Accessories, [Category].Clothing} on 0
from ( Select {[Business Type].[Value Added Reseller], [Business Type].[Warehouse]} on 0
from [Adventure Works])
)
where [Measures].[Reseller Sales Amount]
Observe como NON VISUAL é aplicado somente a [Categoria].
A consulta acima produz os seguintes resultados:
| Tipo de Negócio + Categoria | Todos os produtos | Acessórios | Roupa |
|---|---|---|---|
| Todos os Revendedores | $73.694.430,80 | $506.172,45 | $1.524.906,93 |
| Revendedor de Valor Adicionado | $34.967.517,33 | US$ 175.002,81 | $592.385,71 |
| Armazém | $38.726.913,48 | $331.169,64 | $932.521,23 |
Quando comparado com os resultados anteriores, você pode observar que a linha [Todos os Revendedores] agora soma os valores exibidos para [Revendedor de Valor Adicionado] e [Warehouse], mas que a coluna [Todos os Produtos] mostra o valor total de todos os produtos, incluindo aqueles não exibidos.
O exemplo a seguir demonstra como usar membros calculados em subseleções para filtrar sobre eles. Para poder reproduzir essa amostra, a conexão deve ser estabelecida usando o parâmetro de cadeia de conexão subqueries=1.
select Measures.allmembers on 0
from (
Select { [Measures].[Reseller Sales Amount]
, [Measures].[Reseller Total Product Cost]
, [Measures].[Reseller Gross Profit]
, [Measures].[Reseller Gross Profit Margin]
} on 0
from [Adventure Works]
)
A consulta acima produz os seguintes resultados:
| Valor de vendas do revendedor | Revendedor Custo Total do Produto | Lucro Bruto do Revendedor | Margem de Lucro Bruto do Revendedor |
|---|---|---|---|
| US$ 80.450.596,98 | $79.980.114,38 | $470.482,60 | 0.58% |