我有以下两张表:
[GP_BMI]:
LOAD
gp_event_id as all_events_event_bmi,
gp_dataElement as gp_height_bmi_de,
gp_de_value as gp_height_bmi_value,
'GP' as gp_height_bmi_stage
Resident GP
WHERE gp_dataElement='vOIPn23yOcr'
AND gp_status='COMPLETED';
LEFT JOIN (GP_BMI)
LOAD
gp_event_id as all_events_event_bmi,
gp_dataElement as gp_weight_bmi_de,
gp_de_value as gp_weight_bmi_value
Resident GP
WHERE gp_dataElement='xNkRaZUG7fI'
AND gp_status='COMPLETED';我之所以加入这里,是因为我需要分别具有vOIPn23yOcr和xNkRaZUG7fI in的身高和权重字段在表中水平显示,因为它们是从数据库源以垂直方式显示的。
第二个表如下:
[NUTRITION_BMI]:
LOAD
nutrition_event_id as nutrition_all_events_event_bmi,
nutrition_dataElement as nutrition_height_bmi_de,
nutrition_de_value as nutrition_height_bmi_value,
'Nutrition' as nutrition_height_bmi_stage
Resident Nutrition
WHERE nutrition_dataElement='vOIPn23yOcr'
AND nutrition_status='COMPLETED';
LEFT JOIN (NUTRITION_BMI)
LOAD
nutrition_event_id as nutrition_all_events_event_bmi,
nutrition_dataElement as nutrition_weight_bmi_de,
nutrition_de_value as nutrition_weight_bmi_value
Resident Nutrition
WHERE nutrition_dataElement='xNkRaZUG7fI'
AND nutrition_status='COMPLETED';现在,我想加入这些表--在本例中是vertically,以便在Qlik Sense表中显示它:
LOAD * Resident [PEDIATRIC_BMI];
JOIN(GP_BMI)
LOAD * Resident [NUTRITION_BMI];但结果是水平显示。
我试过:
LOAD * Resident [PEDIATRIC_BMI];
Concatenate(GP_BMI)
LOAD * Resident [NUTRITION_BMI];并得到所有字段水平显示的表。但是,当组合表格时,我需要它们的垂直,因为每个表代表一个阶段。
发布于 2020-09-19 05:03:14
问题
Qlik中的表操作基于字段名(您可以将其视为列名)。
执行JOIN操作时,系统将查找两个表之间共有的字段/列名,并尝试根据这些公共字段中的共享值组合表的行。
这可能会创建新行,如果它是外部联接(即。默认联接,您在这里使用过),但是它的目的是像您所说的那样水平地连接表。
正确的操作是连接,以完成您要做的事情--将行放在彼此的上面。
连接操作将新行(垂直)添加到一些现有表中。为此,它将查看新行中的字段/列名。对于与现有表中的字段/列名匹配的任何一个字段/列名,该值都将放在该列中。否则,将自动创建一个新列来保存该值。
通过查看上面的内容,我假设NUTRITION_BMI表中的每个列都应该位于GP_BMI表的列下面,名称类似,即:
下的应用
诸若此类。问题是,由于字段有不同的名称,所以以上的Qlik将为每个字段创建一个新列。
解决方案
为了将表连接在一起,需要使用相同的字段名。为了区分不同的“类型”行,您需要一个字段来表示“类型”。看起来,您已经在使用gp_height_bmi_stage字段执行此操作了。
您可以在几个不同的命令中这样做,其中一个如下所示(注意,我已经在join中包含了'stage‘字段,以防'all_events_event_bmi’字段在不同阶段之间有任何重叠):
[BMI]:
LOAD
gp_event_id as all_events_event_bmi,
gp_dataElement as height_bmi_de,
gp_de_value as height_bmi_value,
'GP' as stage
Resident GP
WHERE gp_dataElement='vOIPn23yOcr'
AND gp_status='COMPLETED';
CONCATENATE
LOAD
nutrition_event_id as all_events_event_bmi,
nutrition_dataElement as height_bmi_de,
nutrition_de_value as height_bmi_value,
'Nutrition' as stage
Resident Nutrition
WHERE nutrition_dataElement='vOIPn23yOcr'
AND nutrition_status='COMPLETED';
[TMP_BMI_WEIGHTS]:
LOAD
gp_event_id as all_events_event_bmi,
gp_dataElement as weight_bmi_de,
gp_de_value as weight_bmi_value,
'GP' as stage
Resident GP
WHERE gp_dataElement='xNkRaZUG7fI'
AND gp_status='COMPLETED';
CONCATENATE
LOAD
nutrition_event_id as all_events_event_bmi,
nutrition_dataElement as weight_bmi_de,
nutrition_de_value as weight_bmi_value,
'Nutrition' as stage
Resident Nutrition
WHERE nutrition_dataElement='xNkRaZUG7fI'
AND nutrition_status='COMPLETED';
LEFT JOIN(BMI)
LOAD * RESIDENT TMP_BMI_WEIGHTS;
DROP TABLE TMP_BMI_WEIGHTS;https://stackoverflow.com/questions/63594292
复制相似问题