2016-12-08 3 views
1

У меня возникла проблема, когда я пытаюсь написать сценарий для одной версии Insert and Update Инкрементальная загрузка.QlikView: Вставить и обновить в соответствии с условием (без метки времени)

Пример: Для упрощения примера я сделал иллюстрацию того, как я хочу, чтобы набор данных обновлялся. (Я оставляю код для обсуждения)

Иллюстрация:Illustration of the Insert and Update

В приведенном выше примере, вы можете увидеть, что я и хочу вставить новые записи и обновления записей. Условием является то, что я хочу только обновлять записи, если новое значение больше, чем существующая запись.

Например, существующая запись для ID 2 равна 0 (таблица 1), а поскольку новая запись для ID 2 равна 100 (таблица 2), я хочу обновить эту запись, чтобы окончательная обновленная запись для ID 2 равнялась к самому большому значению из них два (обновленная таблица). Если в Таблице 2 содержится новая запись, я просто хочу добавить эту запись в окончательный набор данных.

Описание:

  1. Включить новые записи
  2. Обновление записей, если значение выше существующей записи

Что вы, ребята, думаете, является лучшим решением для такого рода проблема?

ответ

1

Не уверен, что это лучшее решение

//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;