4.5. Encontrar si existe una combinación de dimensiones

Seguiremos con los post sobre dimensiones. 

En esta ocasión os voy a enseñar una manera de averiguar si una combinación de dimensiones existe.
En la captura de pantalla se puede ver las dimensiones que tiene cumplimentadas este cliente.




Este job nos devolverá si existe o no la combinación de dimensiones, en este caso devolverá que existe.

Hay que tener en cuenta que se debe ir aumentando el valor de la array hashArray por cada dimensión que se agrege.


static void existDimensionCombination(Args _args)
{
    DimensionAttribute                            dimAttrib;
    DimensionAttributeValue                   dimAttribValue;
    DimensionAttributeValueSet               valueSet;
    DimensionAttributeValueSetStorage   storage = new DimensionAttributeValueSetStorage();
    DimensionSHA1Hash                        hash;

    CustTable                                         custTable;

    dimensionDefault                              dimensionDefault;
    HashKey                                          hashArray[];

    select firstOnly custTable
        where custTable.AccountNum == "2014";

    dimAttrib           = DimensionAttribute::findByName("CostCenter");
    dimAttribValue  = DimensionAttributeValue::findByDimensionAttributeAndValue(dimAttrib, 'OU_3566');
    hashArray[1]     = dimAttribValue.HashKey; 

    storage.addItem(dimAttribValue);

    dimAttrib           = DimensionAttribute::findByName("Department");
    dimAttribValue  = DimensionAttributeValue::findByDimensionAttributeAndValue(dimAttrib, 'OU_1');
    hashArray[2]     = dimAttribValue.HashKey;

    storage.addItem(dimAttribValue);

    hash = DimensionAttributeValueSetStorage::getHashFromArray(hashArray, storage.elements());  
    valueSet = DimensionAttributeValueSet::findByHash(hash);

    if (custTable.DefaultDimension == valueSet.RecId)
    {
        info("Combinación encontrada");
    }
    else
    {
        info("Combinación no encontrada.");
    }
}

Como siempre digo si alguien tiene una mejor forma de hacerlo será bienvenido.


Comentarios