Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hallo Tam,
i am new in Qlik Sence and have less experiences, i am a Trainee(Student). I have a problem with synthteic key.
I have two tables which are loaded by two different sources and a mastercalender. TheSynthetic Key is between the table force track and AD_ because it hase 4 common field(the Key "Origin_Flag & '/' & EinkOrganisation as Key" was created by my self). And the master calender has the field "History date" which is in both other tables so they are connecting about it. but ist wrong.
first table
force_track:
LOAD
Origin_Flag & '/' & EinkOrganisation as Key,
if(Origin_Flag='Ruck_Best_Ter','Rückstand bestätigte Termine') as Origin_Flag,
Bestaetigungsstatus,
Einkaufsbelegart,
Einkaufsbeleg,
Position,
Lieferant,
Name_1,
Material,
Materialkurztext,
Disponent,
Einkäufergruppe,
Bestelldatum,
Lieferdatum,
Bestätigungstyp,
ALI,
Ende_Planlieferzeit,
Buchungsdatum,
num(Bestellmenge) as Bestellmenge,
Bestätigte_Menge,
Offene_Menge,
Eingangs_Menge,
Bestellnettopreis,
Bestellnettowert,
Offener_Wert,
Hauswährung,
Basismengeneinheit,
Planlieferzeit,
Planliferzeit_in_Dokument,
Endlieferung,
EinkOrganisation ,
History_date,
Werk_Material,
date(ALI)-date(Lieferdatum) as Buchungsdatum_
FROM [$(QVDpafd)Ruck_Best_Ter.qvd]
(qvd)
;
Concatenate
LOAD
Origin_Flag & '/' & EinkOrganisation as Key,
if(Origin_Flag='Ruck_Wunsch','Rückstand Wunschtermine') as Origin_Flag,
Bestaetigungsstatus,
Einkaufsbelegart,
Einkaufsbeleg,
Position,
Lieferant,
Name_1,
Material,
Materialkurztext,
Disponent,
Einkäufergruppe,
Bestelldatum,
Lieferdatum,
Bestätigungstyp,
ALI,
Ende_Planlieferzeit,
Buchungsdatum,
num(Bestellmenge) as Bestellmenge,
Bestätigte_Menge,
Offene_Menge,
Eingangs_Menge,
Bestellnettopreis,
Bestellnettowert,
Offener_Wert,
Hauswährung,
Basismengeneinheit,
Planlieferzeit,
Planliferzeit_in_Dokument,
Endlieferung,
EinkOrganisation ,
History_date,
Werk_Material,
date(ALI)-date(Lieferdatum) as Buchungsdatum_
FROM [$(QVDpafd)Ruck_Wunsch.qvd]
(qvd)
;
Concatenate
load
Origin_Flag & '/' & EinkOrganisation as Key,
if(Origin_Flag='Unbest_Best','unbestätigte Bestellungen') as Origin_Flag,
Bestaetigungsstatus,
Einkaufsbelegart,
Einkaufsbeleg,
Position,
Lieferant,
Name_1,
Material,
Materialkurztext,
Disponent,
Einkäufergruppe,
Bestelldatum,
Lieferdatum,
Bestätigungstyp,
ALI,
Ende_Planlieferzeit,
Buchungsdatum,
num(Bestellmenge) as Bestellmenge,
Bestätigte_Menge,
Offene_Menge,
Eingangs_Menge,
Bestellnettopreis,
Bestellnettowert,
Offener_Wert,
Hauswährung,
Basismengeneinheit,
Planlieferzeit,
Planliferzeit_in_Dokument,
Endlieferung,
EinkOrganisation ,
History_date,
Werk_Material,
date(ALI)-date(Lieferdatum) as Buchungsdatum_
FROM [$(QVDpafd)Unbest_Best.qvd]
(qvd)
;
Concatenate
load
Origin_Flag & '/' & EinkOrganisation as Key,
if(Origin_Flag='Wunsch_Bestat','Wunschtermin vs. Bestätigung') as Origin_Flag,
Bestaetigungsstatus,
Einkaufsbelegart,
Einkaufsbeleg,
Position,
Lieferant,
Name_1,
Material,
Materialkurztext,
Disponent,
Einkäufergruppe,
Bestelldatum,
Lieferdatum,
Bestätigungstyp,
ALI,
Ende_Planlieferzeit,
num(Bestellmenge) as Bestellmenge,
Bestätigte_Menge,
Offene_Menge,
Eingangs_Menge,
Bestellnettopreis,
Bestellnettowert,
Offener_Wert,
Hauswährung,
Basismengeneinheit,
Planlieferzeit,
Planliferzeit_in_Dokument,
Endlieferung,
EinkOrganisation ,
History_date,
Werk_Material,
date(ALI)-date(Lieferdatum) as Buchungsdatum_,
Buchungsdatum
FROM [$(QVDpafd)Wunsch_Bestat.qvd]
(qvd)
where date(ALI)-date(Lieferdatum)>=30;
and the second table:
AD:
LOAD
Alte_Daten.History_date as History_date,
Alte_Daten.Werk as EinkOrganisation,
Alte_Daten.Origin_Flag as Origin_Flag,
Alte_Daten.Total_Sum
FROM [lib://QVD/Sourcing/Alte_Daten.qvd]
(qvd);
AD_:
LOAD
History_date ,
Alte_Daten.Total_Sum ,
Origin_Flag ,
EinkOrganisation ,Origin_Flag & '/' & EinkOrganisation as Key // in der AD Tabelle kann das Key nicht erstellt werden.
RESIDENT AD;
DROP TABLE AD;
and the mastercalender
// Subroutine to Generate Calendar.
//==================================================
SUB CalendarFromField(_field, _calendar, _prefix)
[$(_calendar)]:
// Generate Final Calendar
LOAD
[$(_field)],
year([$(_field)]) as [$(_prefix)Jahr],
month([$(_field)]) as [$(_prefix)Monat],
ApplyMap('QuartaleMapping',
Month([$(_field)]), Null()) as [$(_prefix)Quartal],
Week([$(_field)]) as [$(_prefix)Kalenderwoche],
day([$(_field)]) as [$(_prefix)Tag],
YeartoDate([$(_field)])*-1 as [$(_prefix)LaufendesJahr],
YeartoDate([$(_field)],-1)*-1 as [$(_prefix)LetztesJahr],
weekday([$(_field)]) as [$(_prefix)WochenTag],
Year([$(_field)])&'-'&num(Month([$(_field)]))as [$(_prefix)EindeutigerMonat],
Year([$(_field)])&'-'&Week([$(_field)]) as [$(_prefix)EindeutigeWoche],
Date([$(_field)],'DD/MM/YYYY') as [$(_prefix)MonatJahr],
Date([$(_field)],'MM-YYYY') as [$(_prefix)MonthYear],
Date([$(_field)],'WW/YYYY') as [$(_prefix)WocheJahr];
// Generate range of dates between min and max.
LOAD
date(DateMin + IterNo()) as [$(_field)] // Link Field
WHILE DateMin + IterNo() <= DateMax
;
// Find min and max of date field values.
// Load date field values.
//Careful with previous QUALIFY!!!
LOAD
min(FieldValue('$(_field)', RecNo()))-1 as DateMin,
max(FieldValue('$(_field)', RecNo())) as DateMax
AutoGenerate FieldValueCount('$(_field)');
END SUB
CALL CalendarFromField('History_date','Masterkalendar','')