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.
Aplica um conjunto a cada membro de outro conjunto e então une os conjuntos resultantes por união. Alternativamente, essa função retorna uma cadeia concatenada criada ao avaliar uma expressão de cadeia sobre um conjunto.
Sintaxe
Set expression syntax
Generate( Set_Expression1 , Set_Expression2 [ , ALL ] )
String expression syntax
Generate( Set_Expression1 , String_Expression [ ,Delimiter ] )
Argumentos
Set_Expression1
Uma expressão válida de Expressões Multidimensionais (MDX) que retorna um conjunto.
Set_Expression2
Uma expressão válida de Expressões Multidimensionais (MDX) que retorna um conjunto.
String_Expression
Uma expressão de string válida que normalmente é o nome do membro atual (CurrentMember.Name) de cada tupla no conjunto especificado.
Delimitador
Um delimitador válido expresso como uma expressão de string.
Remarks
Se um segundo conjunto for especificado, a função Generate retorna um conjunto gerado aplicando as tuplas do segundo conjunto a cada tupla do primeiro conjunto, e então unindo os conjuntos resultantes por união. Se ALL for especificado, a função mantém duplicados no conjunto resultante.
Se uma expressão de string for especificada, a função Generate retorna uma string gerada avaliando a expressão de string especificada contra cada tupla do primeiro conjunto e, em seguida, concatenando os resultados. Opcionalmente, a cadeia pode ser delimitada, separando cada resultado na cadeia concatenada resultante.
Exemplos
Definir
No exemplo a seguir, a consulta retorna um conjunto contendo o valor de Medir Vendas pela Internet quatro vezes, porque há quatro membros no conjunto [Data]. [Ano Civil]. [Ano Civil]. MEMBROS:
SELECT
GENERATE( [Date].[Calendar Year].[Calendar Year].MEMBERS
, {[Measures].[Internet Sales Amount]}, ALL)
ON 0
FROM [Adventure Works]
Remover o ALL altera a consulta para que o Valor das Vendas pela Internet seja devolvido apenas uma vez:
SELECT
GENERATE( [Date].[Calendar Year].[Calendar Year].MEMBERS
, {[Measures].[Internet Sales Amount]})
ON 0
FROM [Adventure Works]
O uso prático mais comum do Generate é avaliar uma expressão de conjunto complexo, como TopCount, sobre um conjunto de membros. A consulta de exemplo a seguir mostra os 10 principais produtos para cada Ano Civil em Linhas:
SELECT
{[Measures].[Internet Sales Amount]}
ON 0,
GENERATE(
[Date].[Calendar Year].[Calendar Year].MEMBERS
, TOPCOUNT(
[Date].[Calendar Year].CURRENTMEMBER
*
[Product].[Product].[Product].MEMBERS
,10, [Measures].[Internet Sales Amount]))
ON 1
FROM [Adventure Works]
Note que um top 10 diferente é exibido para cada ano, e que o uso do Generate é a única forma de obter esse resultado. Simplesmente a junção cruzada dos Anos Civis e o conjunto dos 10 melhores Produtos exibirá os 10 melhores Produtos de todos os tempos, repetidos a cada ano, conforme mostrado no exemplo a seguir:
SELECT
{[Measures].[Internet Sales Amount]}
ON 0,
[Date].[Calendar Year].[Calendar Year].MEMBERS
*
TOPCOUNT(
[Product].[Product].[Product].MEMBERS
,10, [Measures].[Internet Sales Amount])
ON 1
FROM [Adventure Works]
String
O exemplo a seguir mostra o uso de Generate para retornar uma string:
WITH
MEMBER MEASURES.GENERATESTRINGDEMO AS
GENERATE(
[Date].[Calendar Year].[Calendar Year].MEMBERS,
[Date].[Calendar Year].CURRENTMEMBER.NAME)
MEMBER MEASURES.GENERATEDELIMITEDSTRINGDEMO AS
GENERATE(
[Date].[Calendar Year].[Calendar Year].MEMBERS,
[Date].[Calendar Year].CURRENTMEMBER.NAME, " AND ")
SELECT
{MEASURES.GENERATESTRINGDEMO, MEASURES.GENERATEDELIMITEDSTRINGDEMO}
ON 0
FROM [Adventure Works]
Note
Essa forma da função Generate pode ser útil ao depurar cálculos, pois permite retornar uma string exibindo os nomes de todos os membros em um conjunto. Isso pode ser mais fácil de ler do que a representação estrita em MDX de um conjunto que a função SetToStr (MDX) retorna.