Set-modifierare som använder set-funktioner
Ibland behöver du definiera en uppsättning fältvärden med hjälp av en nästlad set-definition. Till exempel kanske du vill välja alla kunder som har köpt en viss produkt, utan att välja produkten.
I sådana fall använder du elementuppsättningsfunktionerna P() och E(). Dessa returnerar elementuppsättningar med möjliga värden respektive uteslutna värden för ett fält. Inom parenteserna kan du ange fältet i fråga och ett set-uttryck som definierar omfattningen. Exempel:
P({1<Year = {2021}>} Customer)
Det returnerar uppsättningen med kunder som har haft transaktioner under 2021. Du kan använda det här i en set-modifierare. Exempel:
Sum({<Customer = P({1<Year = {2021}>} Customer)>} Amount)
Det här set-uttrycket kommer att välja dessa kunder men kommer inte att begränsa urvalet till 2021.
Dessa funktioner kan inte användas i andra uttryck.
Dessutom kan endast naturliga uppsättningar användas i elementuppsättningsfunktionerna. Det vill säga, en uppsättning med poster som definieras genom ett enkelt urval.
Till exempel kan den uppsättning som anges med {1-$} inte alltid definieras genom urval och det är därför inte en naturlig uppsättning. Användning av dessa funktioner med icke-naturliga uppsättningar returnerar oväntade resultat.
Exempel: diagramuttryck för set-modifierare som använder set-funktioner
Exempel | Resultat |
---|---|
sum( {$<Customer = P({1<Product={'Shoe'}>} Customer)>} Sales ) |
Returnerar försäljningen för det aktuella urvalet, men endast de kunder som någon gång har köpt produkten 'Shoe'. Elementfunktionen P( ) returnerar här en lista över möjliga kunder; de kunder som är inbegripna i urvalet 'Shoe' i fältet Product. |
sum( {$<Customer = P({1<Product={'Shoe'}>})>} Sales ) |
Enligt ovan. Om fältet utelämnas i elementfunktionen returnerar funktionen de möjliga värdena för fältet som angetts i den yttre tilldelningen. |
sum( {$<Customer = P({1<Product={'Shoe'}>} Supplier)>} Sales ) |
Returnerar försäljningen för det aktuella urvalet, men endast de kunder som någon gång har levererat produkten ”Shoe”, d.v.s. kunden är även leverantör. Elementfunktionen P( ) returnerar här en lista över möjliga leverantörer; de kunder som är inbegripna i urvalet ''Shoe'' i fältet Product. Listan över leverantörer används sedan som ett urval i fältet Customer. |
sum( {$<Customer = E({1<Product={'Shoe'}>})>} Sales ) |
Returnerar försäljningen för det aktuella urvalet, men endast de kunder som aldrig har köpt produkten 'Shoe'. Elementfunktionen E() returnerar här en lista över uteslutna kunder; de kunder som valts bort i och med urvalet 'Shoe' i fältet Product. |