Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Qlik GA: Multivariate Time Series in Qlik Predict: Get Details
cancel
Showing results for 
Search instead for 
Did you mean: 
Arames
Contributor
Contributor

Synthetic Key

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','')

Labels (1)
1 Reply
Venthan
Contributor III
Contributor III

Hi,
Kindly rename the fields causing synthetic keys, have only one key as link between the two tables