Filtrar os dados usando a Declaração Fi no tabuleiro

tenho uma fonte de dados no quadro que parece algo semelhante a isto:

   SKU      Backup_Storage
  
   A        5
   A        1
   B        2
   B        3
   C        1
   D        0

gostaria de criar um campo calculado no tabuleiro que realize um cálculo se a coluna do SKU contiver o texto 'A' ou 'D' , e para efectuar um cálculo médio se a coluna do SKU contiver as letras ' C ' ou ' B '

Isto é o que estou a fazer.
IF CONTAINS(ATTR([SKU]),'A') or 
CONTAINS(ATTR([SKU]),'D') 
THEN SUM([Backup_Storage]) 
ELSEIF CONTAINS(ATTR([SKU]),'B') or 
CONTAINS(ATTR([SKU]),'C') 
THEN AVG([Backup_Storage])
END

UPDATE-o resultado desejado seria:

SKU    BACKUP
A, D   6               (This is the SUM OF A and D)
B, C   2               (This is the AVG of B and C)

cálculo acima mostra como válido, no entanto, eu vejo NULLS na minha tabela de fonte de dados. Qualquer sugestão é apreciada.

nomeei o campo calculado: SKU_FILTER_ calculation

enter image description here

Author: Lynn, 2020-11-20

2 answers

Basicamente, IF THEN ELSE a condição funciona quando um teste é verdadeiro/falso. A sua condição especificada não é um caso de uso adequado de IF THEN ELSE porque o SKUs pode tomar todos os valores possíveis. Vê assim..

Os seus Dados

SKU      Backup_Storage
  
   A        5
   A        1
   B        2
   B        3
   C        1
   D        0

Vamos nomear o seu campo de calc como CF, então o CF irá tomar o valor A na primeira linha e irá sair SUM(5) = 5. Para a segunda linha irá sair sum(1) = 1, para a terceira e para a frente linhas irá sair como avg(2) = 2, avg(3) = 3, avg(1) e sum(0) respectivamente. todos estes valores são iguais apenas a [Backup_storage] e tenho a certeza que isto não estás a tentar obter.

Se, em vez disso, estiver a tentar obter a soma(51,0) + avg(2,3,1) (obviamente, assumi + aqui) que é igual a 8, ou seja, um único valor para o conjunto de dados completo, por favor prossiga com este campo calculado..

SUM(IF CONTAINS([SKU], 'A') OR CONTAINS([SKU], 'D')
THEN [Backup storage] END)
+
AVG(IF CONTAINS([SKU], 'B') OR CONTAINS([SKU], 'C')
THEN [Backup storage] END)

Isto irá devolver um 8 quando colocado à vista

enter image description here

Escusado será dizer, se quiser outro operador em vez de + tem de mudar isso. em CF de acordo com
 1
Author: AnilGoyal, 2020-11-20 06:54:01
De acordo com o seu post editado, sugiro uma metodologia diferente. Criar grupos de diferenças onde deseja realizar agregações diferentes

Step-1 criar grupos no campo SKU. Nomeei este grupo como SKUG

enter image description here

Step-2 crie um campo calculado CF como

SUM(ZN(IF CONTAINS([SKU], 'A') OR CONTAINS([SKU], 'D')
THEN [Backup storage] END))
+
AVG(ZN(IF CONTAINS([SKU], 'B') OR CONTAINS([SKU], 'C')
THEN [Backup storage] END))

Step-3 obtenha a vista desejada

enter image description here

Boa Sorte.
 1
Author: AnilGoyal, 2020-11-20 07:35:38