如何使用ifelse在Quicksight参数中添加计算字段中选择多个相关列



我在一个表中有一个参数'type',它可以有多个值,如下所示-

  1. 人类
  2. 黑猩猩
  3. 红猩猩

我有3列与表中的每种类型相关-

  1. 人的身高、体重、寿命
  2. 黑猩猩身高、体重、寿命
  3. 猩猩身高、猩猩体重、猩猩寿命

因此,如果我选择类型人类,则快速瞄准仪仪表板应仅显示三列-

  1. 人的身高、体重、寿命

并且不应显示以下列-

  1. 黑猩猩身高、体重、寿命
  2. 猩猩身高、猩猩体重、猩猩寿命

我创建了参数类型,在添加计算字段中,我试图使用ifelse根据如下所选的参数选择列-

ifelse(${type}='human',{human_avg_height}, {human_avg_weight}, {human_avg_lifespan},{function})

我也试过-

ifelse(${type}='human',{{human_avg_height}, {human_avg_weight}, {human_avg_lifespan},{function}})

和-

ifelse(${type}='human',{human_avg_height, human_avg_weight, human_avg_lifespan},{function}})

但这些都不起作用。我做错了什么?

实现这一点的一种方法是使用三个不同的计算字段,一个用于所有高度,一个表示重量,另一个表示寿命。高度应该是这样的:

ifelse(
${type}='human',{human_avg_height}, ifelse(
${type}='chimpanzee', { chimpanzee_avg_height},  ifelse(
${type}='orangutan',{ orangutan_avg_height},  
NULL
)))

权重寿命制作另一个计算字段,然后将这些计算字段添加到表中,并按类型进行筛选。

要使查看者清楚地了解存在哪些数据,请编辑可视化的标题以包括类型

${type} Data

您必须使用类型为的ifelse为每个度量创建一个计算字段来选择正确的值,但不必像skabo那样创建内部ifelse,ifelse语法为ifelse(if, then [, if, then ...], else),因此您可以定义计算字段如下:

avg_height = ifelse(${type}='human', {human_avg_height}, ${type}='chimpanzee', {chimpanzee_avg_height},${type}='orangutan', {orangutan_avg_height}, NULL)
avg_weight = ifelse(${type}='human', {human_avg_weight}, ${type}='chimpanzee', {chimpanzee_avg_weight},${type}='orangutan', {orangutan_avg_weight}, NULL)
avg_lifespan = ifelse(${type}='human', {human_avg_lifespan}, ${type}='chimpanzee', {chimpanzee_avg_lifespan},${type}='orangutan', {orangutan_avg_lifespan}, NULL)

然后在视觉效果中使用这些计算字段。