2016-12-08 2 views
1

Ich habe ein Problem festgestellt, wenn ich versuche, ein Skript auf eine Version von Insert and Update Incremental Load zu schreiben.QlikView: Einfügen und Aktualisieren basierend auf Bedingung (ohne Zeitstempel)

Beispiel: Um das Beispiel zu vereinfachen, habe ich illustriert, wie der Datensatz aktualisiert werden soll. (Ich lasse den Code für die Diskussion)

Illustration:Illustration of the Insert and Update

In dem obigen Beispiel können Sie sehen, dass ich beide neue Datensätze einfügen möchten, und Datensätze zu aktualisieren. Die Bedingung ist, dass ich Datensätze nur aktualisieren möchte, wenn der neue Wert größer als der vorhandene Datensatz ist. Beispielsweise ist der vorhandene Datensatz für ID 2 gleich 0 (Tabelle 1), und da der neue Datensatz für ID 2 gleich 100 ist (Tabelle 2), möchte ich diesen Datensatz aktualisieren, damit der endgültige aktualisierte Datensatz für ID 2 gleich ist zum höchsten Wert von ihnen zwei (aktualisierte Tabelle). Wenn Tabelle 2 einen neuen Datensatz enthält, möchte ich diesen Datensatz nur zum endgültigen Datensatz hinzufügen.

Beschreibung:

  1. Einfügen neuer Datensätze
  2. Verbuchungssätze, wenn der Wert höher ist als der bestehende Rekord

Was denkt ihr ist die beste Lösung für diese Art von Problem?

Antwort

1

nicht sicher, dass es die beste Lösung

//QVD 
Table: 
LOAD * INLINE [ 
ID, Value, Source 
1, 500, 'QVD' 
2, 0, 'QVD' 
3, 100, 'QVD' 
4, 300, 'QVD' 
5, 0, 'QVD' 
]; 

//ODBC 
Concatenate(Table) 
LOAD * INLINE [ 
ID, Value, Source 
2, 100, ODBC 
3, 700, ODBC 
4, 300, ODBC 
6, 500, ODBC 
7, 0, ODBC 
]; 

NewTable: 
LOAD 
    ID, 
    max(Value) as Value 
Resident Table 
Group by ID 
; 

drop Table Table; 
Verwandte Themen