У меня есть две таблицы:
violations_details:
LOAD
"appname",
"snapshot_id",
"metric_id",
"object_id",
"object_type",
"object_full_name",
"metric_num_value",
"status",
"module_name",
"Anz_Fehler",
"violations_details_kz",
"error_abs";
SQL SELECT
"appname",
"snapshot_id",
"metric_id",
"object_id",
"object_type",
"object_full_name",
"metric_num_value",
"status",
"module_name",
1 as "Anz_Fehler",
1 as "violations_details_kz",
CASE WHEN status = 'Added' THEN 1
WHEN status = 'Deleted' THEN -1
ELSE 0
END as error_abs
FROM "postgres"."cast_xapp_tools"."datapond_violations_details";
и
LOAD
gen_id,
gen_app,
gen_patt1,
gen_patt2,
gen_class FROM [lib://AttachedFiles/gen_pattern.xlsx] (ooxml, embedded labels, table is tbl_gen_pattern);
Теперь я хочу присоединить coloumn gen_id к таблице abuse_details, где object_full_name похоже на gen_patt1. Если он не совпадает с gen_id, в файле abuse_details должно быть пусто.
Размер: таблица нарушение_детали> 4 миллиона строк talbe gen_pattern = 55 строк
Есть простая идея сделать это? Я думаю, что мне нужно использовать предложение резидента внутри, но каждая попытка не удалась.
Спасибо
Violations_details:
LOAD
"appname",
"snapshot_id",
"metric_id",
"object_id",
"object_type",
"object_full_name" as gen_id,
"metric_num_value",
"status",
"module_name",
"Anz_Fehler",
"violations_details_kz",
"error_abs";
SQL SELECT
"appname",
"snapshot_id",
"metric_id",
"object_id",
"object_type",
"object_full_name",
"metric_num_value",
"status",
"module_name",
1 as "Anz_Fehler",
1 as "violations_details_kz",
CASE WHEN status = 'Added' THEN 1
WHEN status = 'Deleted' THEN -1
ELSE 0
END as error_abs
FROM "postgres"."cast_xapp_tools"."datapond_violations_details";
Left join
LOAD
gen_id,
gen_app,
gen_patt1,
gen_patt2,
gen_class FROM [lib://AttachedFiles/gen_pattern.xlsx] (ooxml, embedded labels, table is tbl_gen_pattern);
Вы довольно близки - на самом деле вам не нужно использовать резидент, так как вы можете присоединиться к нему сразу после его загрузки. Qlik присоединяется к одноименным полям. Я не уверен, какое поле вам нужно, поэтому я просто предположил, что object_id совпадает с gen_id (обратите внимание, как я изменил object_id на псевдоним gen_id). Итак, Qlik теперь знает, как присоединиться к таблицам в этом поле (хотя вы можете захотеть присоединиться к нему в другом поле).
violations_details:
LOAD
"appname",
"snapshot_id",
"metric_id",
"object_id" as gen_id,
"object_type",
"object_full_name",
"metric_num_value",
"status",
"module_name",
"Anz_Fehler",
"violations_details_kz",
"error_abs";
SQL SELECT
"appname",
"snapshot_id",
"metric_id",
"object_id",
"object_type",
"object_full_name",
"metric_num_value",
"status",
"module_name",
1 as "Anz_Fehler",
1 as "violations_details_kz",
CASE WHEN status = 'Added' THEN 1
WHEN status = 'Deleted' THEN -1
ELSE 0
END as error_abs
FROM "postgres"."cast_xapp_tools"."datapond_violations_details";
left join (violations_details)
LOAD
gen_id,
gen_app,
gen_patt1,
gen_patt2,
gen_class
FROM [lib://AttachedFiles/gen_pattern.xlsx] (ooxml, embedded labels, table is tbl_gen_pattern);