Criando agregações (XMLA)
Designs de agregação estão associados a partições de um determinado grupo de medidas para garantir que as partições usem a mesma estrutura ao armazenarem agregações. Usar a mesma estrutura de armazenamento para partições permite definir facilmente partições que podem ser mescladas posteriormente usando o comando MergePartitions . Para obter mais informações sobre designs de agregação, consulte Agregações e Designs de Agregação.
Para definir agregações para um design de agregação, você pode usar o comando DesignAggregations no XML for Analysis (XMLA). O comando DesignAggregations tem propriedades que identificam qual design de agregação usar como referência e como controlar o processo de design com base nessa referência. Usando o comando DesignAggregations e suas propriedades, você pode criar agregações iterativamente ou em lote e exibir as estatísticas de design resultantes para avaliar o processo de design.
Especificando um design de agregação
A propriedade Object do comando DesignAggregations deve conter uma referência de objeto a um design de agregação existente. A referência de objeto contém um identificador de banco de dados, um identificador de cubo, um identificador de grupo de medidas e um identificador de design de agregação. Se o design de agregação ainda não existir, ocorrerá um erro.
Controlando o processo de design
Você pode usar as seguintes propriedades do comando DesignAggregations para controlar o algoritmo usado para definir agregações para o design de agregação:
A propriedade Steps determina quantas iterações o comando DesignAggregations deve realizar antes de retornar o controle ao aplicativo cliente.
A propriedade Time determina quantos milissegundos o comando DesignAggregations deve usar antes de retornar o controle para o aplicativo cliente.
A propriedade Optimization determina a porcentagem estimada de melhoria de desempenho que o comando DesignAggregations deve tentar alcançar. Se você estiver criando agregações iterativamente, só terá de enviar essa propriedade no primeiro comando.
A propriedade Armazenamento determina a quantidade estimada de armazenamento em disco, em bytes, usada pelo comando DesignAggregations . Se você estiver criando agregações iterativamente, só terá de enviar essa propriedade no primeiro comando.
A propriedade Materialize determina se o comando DesignAggregations deve criar as agregações definidas durante o processo de design. Se estiver criando agregações iterativamente, essa propriedade deve ser definida como falsa até que você esteja pronto para salvar as agregações criadas. Quando definida como verdadeira, o processo de design atual terminará e as agregações definidas serão adicionadas ao design de agregação especificado.
Especificando consultas
O comando DesignAggregations dá suporte ao comando de otimização baseado em uso, incluindo um ou mais elementos de consulta na propriedade Consultas . A propriedade Consultas pode conter um ou mais elementos de consulta . Se a propriedade Consultas não contiver elementos de consulta , o design de agregação especificado no elemento Object usará uma estrutura padrão que contém um conjunto geral de agregações. Esse conjunto geral de agregações foi projetado para atender aos critérios especificados nas propriedades de Otimização e Armazenamento do comando DesignAggregations .
Cada elemento Query representa uma meta de consulta usada pelo processo de design para definir agregações que se destinam às consultas usadas com mais frequência. Você pode especificar suas próprias consultas de meta ou usar as informações armazenadas por uma instância do Microsoft SQL Server SQL Server Analysis Services no log de consultas para recuperar informações sobre as consultas mais usadas. O Assistente de Otimização de Usage-Based usa o log de consultas para recuperar consultas de meta com base no tempo, no uso ou em um usuário especificado quando ele envia um comando DesignAggregations . Para obter mais informações, consulte Ajuda F1 do Assistente de Otimização Baseada em Uso.
Se você estiver criando agregações iterativamente, só precisará passar consultas de meta no primeiro comando DesignAggregations porque a instância de SQL Server Analysis Services armazena essas consultas de meta e usa essas consultas durante os comandos de DesignAggregations subsequentes. Após transmitir as metas de consulta no primeiro comando DesignAggregations de um processo iterativo, qualquer comando DesignAggregations subsequente que contém metas de consulta na propriedade Queries gerará um erro.
O elemento Query contém um valor delimitado por vírgula com os seguintes argumentos:
Frequency,Dataset[,Dataset...]
Frequência
Um fator de ponderação que corresponde ao número de vezes que a consulta foi executada previamente. Se o elemento Query representa uma nova consulta, o valor Frequency representa o fator de ponderação usado pelo processo de design para avaliar a consulta. À medida que o valor de frequência fica maior, o peso colocado na consulta durante processo de design aumenta.
Conjunto de dados
Uma sequência numérica que especifica quais atributos de uma dimensão devem ser incluídos na consulta. Essa sequência deve ter o mesmo número de caracteres do número de atributos na dimensão. Zero (0) indica que o atributo na posição ordinal especificada não está incluído na consulta para a dimensão especificada e um (1) indica que o atributo na posição ordinal especificada está incluído na consulta para a dimensão especificada.
Por exemplo, a sequência “011” faz referência a uma consulta que envolve uma dimensão com três atributos, dos quais o segundo e o terceiro estão incluídos na consulta.
Observação
Alguns atributos não são considerados no conjunto de dados. Para obter mais informações sobre atributos excluídos, consulte XMLA (Elemento de Consulta).
Cada dimensão no grupo de medidas que contém o design de agregação é representado por um valor Dataset no elemento Query . A ordem de valores Dataset deve coincidir com a ordem de dimensões incluída no grupo de medidas.
Criando agregações usando processos iterativos ou em lote
Você pode usar o comando DesignAggregations como parte de um processo iterativo ou de um processo em lote, dependendo da interatividade exigida pelo processo de design.
Criando agregações usando um processo iterativo
Para criar agregações iterativamente, envie vários comandos DesignAggregations para fornecer controle fino sobre o processo de design. O Assistente de Design de Agregação usa essa mesma abordagem para fornecer controle refinado sobre o processo de design. Para obter mais informações, consulte Ajuda F1 do Assistente de Design de Agregação.
Observação
Uma sessão explícita é necessária para a criação iterativa de agregações. Para obter mais informações sobre sessões explícitas, consulte Gerenciando conexões e sessões (XMLA).
Para iniciar o processo iterativo, primeiro você envia um comando DesignAggregations que contém as seguintes informações:
Os valores da propriedade Armazenamento e Otimização nos quais todo o processo de design é direcionado.
Os valores da propriedade Etapas e Hora nos quais a primeira etapa do processo de design é limitada.
Se você quiser otimização baseada em uso, a propriedade Consultas que contém as consultas de meta nas quais todo o processo de design é direcionado.
A propriedade Materialize definida como false. A definição dessa propriedade como falsa indica que o processo de design não salvará as agregações definidas no design de agregação quando o comando for concluído.
Quando o primeiro comando DesignAggregations é concluído, o comando retorna um conjunto de linhas que contém estatísticas de design. Você pode avaliar essas estatísticas de design para determinar se o processo de design deve continuar ou se ele foi concluído. Se o processo deve continuar, você enviará outro comando DesignAggregations que contém os valores Etapas e Hora com os quais essa etapa do processo de design é limitada. Avalie as estatísticas resultantes e determine se o processo de design deve continuar. Esse processo iterativo de envio de comandos DesignAggregations e avaliação dos resultados continua até que você atinja suas metas e tenha um conjunto apropriado de agregações definido.
Depois de acessar o conjunto de agregações desejado, envie um comando final designAggregations . Este comando DesignAggregations final deve ter sua propriedade Steps definida como 1 e sua propriedade Materialize definida como true. Usando essas configurações, este comando final DesignAggregations conclui o processo de design e salva a agregação definida no design de agregação.
Criando agregações usando um processo em lote
Você também pode criar agregações em um processo em lote enviando um único comando DesignAggregations que contém os valores de propriedade Etapas, Tempo, Armazenamento e Otimização nos quais todo o processo de design é direcionado e limitado. Se você quiser otimização baseada em uso, as consultas de meta nas quais o processo de design é direcionado também devem ser incluídas na propriedade Consultas. Verifique também se a propriedade Materialize está definida como true, para que o processo de design salve as agregações definidas no design de agregação quando o comando for concluído.
Você pode criar agregações usando um processo em lote em uma sessão implícita ou em uma sessão explícita. Para obter mais informações sobre sessões implícitas e explícitas, consulte Gerenciando conexões e sessões (XMLA).
Retornando estatísticas de design
Quando o comando DesignAggregations retorna o controle para o aplicativo cliente, o comando retorna um conjunto de linhas que contém uma única linha que representa as estatísticas de design do comando. O conjunto de linhas contém as colunas listadas na tabela a seguir.
Coluna | Tipo de dados | Descrição |
---|---|---|
Etapas | Integer | O número de etapas executadas pelo comando antes que ele devolva o controle ao aplicativo cliente. |
Hora | Long integer | O número de milissegundos que o comando leva antes de devolver o controle ao aplicativo cliente. |
Otimização | Double | A porcentagem estimada de aperfeiçoamento de desempenho atingida pelo comando antes de devolver o controle ao aplicativo cliente. |
Armazenamento | Long integer | O número estimado de bytes que o comando leva antes de devolver o controle ao aplicativo cliente. |
Agregações | Long integer | O número de agregações definido pelo comando antes de devolver o controle ao aplicativo cliente. |
LastStep | Booliano | Indica se os dados do conjunto de linhas representam a última etapa no processo de design. Se a propriedade Materialize do comando foi definida como true, o valor dessa coluna será definido como true. |
Você pode usar as estatísticas de design contidas no conjunto de linhas retornado após cada comando DesignAggregations no design iterativo e em lote. No design iterativo, você pode usar as estatísticas de design para determinar e exibir o andamento. Quando estiver criando agregações em lote, poderá usar as estatísticas de design para determinar o número de agregações criadas pelo comando.