Limite de Tamanho de Dimensão de 64 bits para Outline de Armazenamento Agregado
Um outline de cubo de armazenamento agregado (ASO) do Essbase não pode exceder 64 bits por dimensão.
O número de bits necessários para uma dimensão é o número máximo de bits usados por qualquer filho de nível 0, incluindo os filhos de nível 0 em hierarquias alternativas e dimensões de atributo associadas. Para fins de numeração de membro, as dimensões de atributo são tratadas como hierarquias alternativas de suas dimensões base.
Em geral, a fórmula para determinar o número de bits necessários para qualquer membro em uma dimensão pode ser expressa como:
#_bits_member’s_parent + log(x)em que x é o número de filhos do pai.
Por exemplo, se o pai do membro for o membro A, que requer 5 bits, e A tiver 10 filhos, o número de bits exigido por cada filho será:
5 +log(10) = 9 bitsO membro superior de uma dimensão ou hierarquia geralmente usa 0 bits. No entanto, quando uma ou mais gerações superiores consistem em membros somente para label, os membros somente para label não recebem números de membros (porque não são considerados membros armazenados). Portanto, se houver membros x na primeira geração não somente para rótulo, esses membros usarão bits log(x). O resto das crianças abaixo deles são numeradas normalmente.
Da mesma forma, se uma dimensão ou hierarquia for dinâmica, somente os membros de nível 0 que são armazenados ou compartilhados receberão números de membros. O número de bits necessários para esses membros é log(x), em que x é o número de membros de nível 0 que são armazenados ou compartilhados (ou seja, o número de membros de nível 0 que não são membros de fórmula).
Se, no entanto, quaisquer hierarquias alternativas tiverem armazenado membros de nível 0 (não compartilhados), cada membro de cada hierarquia na dimensão (incluindo dimensões de atributo associadas) usará um bit de log(x) extra, em que x é o número total de hierarquias e dimensões de atributo associadas para esta dimensão base.
O exemplo a seguir usa a dimensão Produtos no banco de dados ASOsamp.Basic:

A dimensão Produtos tem duas hierarquias: Todas as Mercadorias e Mercadorias de High End, que é uma hierarquia alternativa. O High End Merchandise tem um membro de nível 0 armazenado: Membro Armazenado. A dimensão Produtos não tem dimensões de atributo associadas.
Membros Todas as Mercadorias e Mercadorias High End usam log(2) = 1 bit.
Observação:
Se a hierarquia alternativa High End Merchandise não tivesse membros de nível 0 armazenados, os membros superiores de cada hierarquia (e dimensões de atributo associadas) usariam cada um 0 bits.
O cálculo do número de bits exigido por cada nível 0 filhos:
All Merchandise = 1 bit
Personal Electronics, Home Entertainment, Other = 1 + log(3) = 3 bits
Digital Cameras/Camcorders, Handhelds/PDAs, Portable Audio = 3 + log(3) = 5
Children of Digital Cameras/Camcorders = 5 + log(3) = 7
Children of Handhelds/PDAs = 5 + log(3) = 7
Children of Portable Audio = 5 + log(2) = 6
Televisions, Home Audio/Video = 3 + log(2) = 4
Children of Televisions = 4 + log(5) = 7
Children of Home Audio/Video = 4 + log(4) = 6
Computers and Peripherals = 3 + log(1) = 3 **
Systems, Displays, CD/DVD drives = 3 + log(3) = 5
Children of Systems = 5 + log(2) = 6
High End Merchandise = 1 bit
Flat Panel, HDTV, Stored Member = 1 + log(3) = 3 bits
Member Computers and Peripherals tem o mesmo número de bits (3) que seu outro pai.
Os bits máximos usados por qualquer criança de nível 0 na dimensão Produtos são 7 (Crianças de Câmeras Digitais e Filhos de Televisores). Portanto, Produtos usa 7 bits, que é menor que o limite de tamanho de dimensão de 64 bits.
Se o tamanho da dimensão exceder 64 bits:
-
O Essbase gera o seguinte erro ao salvar o outline:
Hierarchy [DimensionName] is too complex. It exceeds the maximum member number width of 64 bits. See application log for details. -
O Essbase registra mensagens semelhantes às seguintes no log do aplicativo:
Member number for member [level0member] requires [65] bits to encode Member [level0member] contributes [5] bits to member number Member [level1parent] contributes [20] bits to member number Member [level2parent] contributes [20] bits to member number Member [level3parent] contributes [20] bits to member number
Para corrigir o erro, use uma destas recomendações:
-
Se possível, exclua alguns irmãos de qualquer um dos membros mencionados nas mensagens. Reduzir o número de irmãos por um poder de dois economiza um bit. Por exemplo, suponha que level0member, que contribui com 5 bits para o número do membro, tenha 18 irmãos, incluindo ele mesmo. Reduzir o número de irmãos para 16 ou menos salva um bit porque log(16) = 4. Da mesma forma, reduzir o número de irmãos para 8 ou menos economiza dois bits.
-
Reclassificar alguns irmãos de membros referenciados nas mensagens. Por exemplo, mova metade dos 18 irmãos de level0member para outro pai que não tenha tantos filhos. Como alternativa, crie um novo pai como irmão de level1parent e mova metade dos filhos de level1parent sob o novo membro. Esta abordagem poupa um pouco.
-
Combine alguns níveis intermediários. Por exemplo, mova level0member e todos os seus irmãos para serem filhos de level2parent e, em seguida, remova level1parent. Essa abordagem é mais envolvida, mas pode economizar muitos bits.