Expresiones de conjunto inner y outer
Las expresiones de conjunto se utilizan dentro y fuera de las funciones de agregación y van entre llaves.
Cuando utiliza una expresión de conjunto dentro de una función de agregación, puede presentar el siguiente aspecto:
Ejemplo: Expresión de conjunto interna
Sum( {$<Year={2021}>} Sales )
Utilice una expresión de conjunto fuera de la función de agregación si tiene expresiones con múltiples agregaciones y desea evitar escribir la misma expresión de conjunto en cada función de agregación.
Si utiliza una expresión de conjunto externa, debe colocarse al comienzo del área.
Ejemplo: Expresión de conjunto externa
{<Year={2021}>} Sum(Sales) / Count(distinct Customer)
Si utiliza una expresión de conjunto fuera de la función de agregación, también puede aplicarla en medidas maestras actuales.
Ejemplo: Expresión de conjunto externa aplicada a la medida maestra
{<Year={2021}>} [Master Measure]
Una expresión de conjunto utilizada fuera de las funciones de agregación afecta a toda la expresión, a menos que esté entre corchetes, en ese caso los corchetes definen el alcance. En el ejemplo siguiente de ámbito léxico, la expresión de conjunto solo se aplica a la agregación que va dentro de los corchetes.
Ejemplo: Ámbito léxico
( {<Year={2021}>} Sum(Amount) / Count(distinct Customer) ) – Avg(CustomerSales)
Reglas:
Alcance léxico
La expresión de conjunto afecta a toda la expresión, a menos que esté encerrada entre corchetes. Si es así, los corchetes definen el alcance léxico.
Posición
La expresión de conjunto debe colocarse al comienzo del ámbito léxico.
Contexto
El contexto es la selección que es relevante para la expresión. Tradicionalmente, el contexto siempre ha sido el estado predeterminado de la selección actual. Pero si un objeto está establecido en un estado alterno, el contexto es el estado alterno de la selección actual.
También puede definir un contexto en forma de una expresión de conjunto externa.
Herencia
Las expresiones de conjunto internas tienen prioridad sobre las expresiones de conjunto externas. Si la expresión de conjunto interna contiene un identificador de conjunto, reemplaza el contexto. De lo contrario, el contexto y la expresión de conjunto se fusionarán.
-
{$<SetExpression>}: ignora la expresión de conjunto externa
-
{<SetExpression>}: se fusiona con la expresión de conjunto externa
Asignación de conjunto de elementos
La asignación del conjunto de elementos determina cómo se fusionarán las dos selecciones. Si se utiliza un signo igual normal, la selección en la expresión del conjunto interno tiene prioridad. De lo contrario, se utilizará el operador de conjunto implícito.
-
{<Field={value}>}: esta selección interna reemplaza cualquier selección externa en “Field”.
-
{<Field+={value}>}: esta selección interna se fusiona con la selección externa en “Field”, utilizando el operador de unión.
-
{<Field*={value}>}: esta selección interna se fusiona con la selección externa en “Field”, utilizando el operador de intersección.
Herencia en varios pasos
La herencia se puede dar en varios pasos. Ejemplos:
-
Selección actual → Sum(Amount)
La función de agregación utilizará el contexto, que aquí es la selección actual.
-
Selección actual → {<Set1>} Sum(Amount)
Set1 heredará su contexto de la selección actual y el resultado será el contexto para la función de agregación.
-
Selección actual → {<Set1>} ({<Set2>} Sum(Amount))
Set2 heredará su contexto de Set1, que a su vez lo hereda de la selección actual, y el resultado será el contexto para la función de agregación.
La función Aggr()
La función Aggr() crea una agregación anidada que tiene dos agregaciones independientes. En el ejemplo a continuación, se calcula Count() para cada valor de Dim, y la matriz resultante se agrega mediante la función Sum().
Ejemplo:
Sum(Aggr(Count(X),Dim))
Count() es la agregación interna y Sum() la agregación externa.
-
La agregación interna no hereda ningún contexto de la agregación externa.
-
La agregación interna hereda el contexto de la función Aggr(), que puede contener una expresión de conjunto.
-
Tanto la función Aggr() como la función de agregación externa heredan el contexto de una expresión de conjunto externa.