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
Publicar un comentario