Pergunta
Henrique Dias · Dez. 16, 2020

Fact Table com 1 registro

Fala pessoal, tudo bem?

Criei uma tabela com 100k registros. No SELECT, retorna tudo belezinha. No entanto, quando tento criar um cubo utilizando essa tabela como base, o cubo é compilado com sucesso. No entanto, quando faço o BUILD, ele gera apenas 1 fato.

Alguém já se deparou com alguma situação similar?

Alguns detalhes:

Class diashenrique.olist.data.order Extends %Persistent
{

Property customerID As diashenrique.olist.data.customer;

Property orderStatus As %String;

Property purchaseTimeStamp As %TimeStamp;

Property approvedTimeStamp As %TimeStamp;

Property deliveredCarrierDate As %TimeStamp;

Property deliveredCustomerDate As %TimeStamp;

Property estimatedDelivery As %TimeStamp;

Index OrderStatusIndex On orderStatus;

Index customerIndex On customerID;

Index purchaseIndex On purchaseTimeStamp;

Storage Default
{
<Data name="orderDefaultData">
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>customerID</Value>
</Value>
<Value name="3">
<Value>orderStatus</Value>
</Value>
<Value name="4">
<Value>purchaseTimeStamp</Value>
</Value>
<Value name="5">
<Value>approvedTimeStamp</Value>
</Value>
<Value name="6">
<Value>deliveredCarrierDate</Value>
</Value>
<Value name="7">
<Value>deliveredCustomerDate</Value>
</Value>
<Value name="8">
<Value>estimatedDelivery</Value>
</Value>
</Data>
<DataLocation>^orderD</DataLocation>
<DefaultData>orderDefaultData</DefaultData>
<IdLocation>^orderD</IdLocation>
<IndexLocation>^orderI</IndexLocation>
<StreamLocation>^orderS</StreamLocation>
<Type>%Storage.Persistent</Type>
}

}
IRISAPP>d ##class(%DeepSee.Utils).%PrintBuildErrors("OrderCube")                                          
0 build error(s) for 'OrderCube'

IRISAPP>Do ##class(%DeepSee.Utils).%BuildCube("OrderCube")                                                

Building cube [OrderCube]
Existing cube deleted.
Fact table built:                 1 fact(s) (1 worker(s) used)
Fact indices built:               1 fact(s) (1 worker(s) used)

Complete
Elapsed time:                  0.209013s
Source expression time:        0.000003s

   

Abraços,

Henrique

Product version: IRIS 2020.4
$ZV: IRIS for UNIX (Ubuntu Server LTS for x86-64 Containers) 2020.4 (Build 524U) Thu Oct 22 2020 13:04:25 EDT
10
1 0 2 37
Log in or sign up to continue

Segue a resposta em português do @Eduard Lebedyuk :

Os cubos dependem muito de índices de bitmap para serem executados rapidamente.

Principalmente, cada fato na tabela de fatos deve ser acessível por meio do índice de bitmap.

No passado, os índices de bitmap funcionavam apenas com inteiros positivos, mas agora parece haver uma abordagem %BID - essencialmente uma chave substituta.

Eu acho que o InterSystems BI deveria gerar um erro ou gerar um %BID ou oferecer para gerar um %BID se a  propriedade id da classe do fato não for um inteiro positivo.