Как рассчитать промежуточный итог на год в кдб - PullRequest
2 голосов
/ 21 марта 2019

У меня есть такая таблица:

2019.03m Bolts  100
2019.03m Nuts    50
2019.02m Bolts   10
2019.02m Nuts   100 
2019.01m Bolts   50
2019.01m Nuts    10
2018.12m Bolts   10
2018.12m Nuts    10
2018.11m Bolts   20
2018.11m Nuts    30

Я хотел бы ввести новый столбец под названием столбец года к дате

2019.03m Bolts  100 160
2019.03m Nuts    50 160
2019.02m Bolts   10  60
2019.02m Nuts   100 110 
2019.01m Bolts   50  50
2019.01m Nuts    10  10
2018.12m Bolts   10  30
2018.12m Nuts    10  40
2018.11m Bolts   20  20
2018.11m Nuts    30  30

Суммирует строку предыдущего года и сбрасывается, когда наступает новый год.

У меня есть идея использовать sums, но как мне выполнить сброс, когда я попадаю в новый год?

Ответы [ 2 ]

6 голосов
/ 21 марта 2019

Я верю, что ниже, что вы после.Заметьте, что я перевернул таблицу в порядке, установленном во времени по возрастанию.

reverse  update YTD:sums Number  by tool,date.year from reverse t

date    tool  Number YTD
------------------------
2019.03 Bolts 100    160
2019.03 Nuts  50     160
2019.02 Bolts 10     60
2019.02 Nuts  100    110
2019.01 Bolts 50     50
2019.01 Nuts  10     10
2018.12 Bolts 10     30
2018.12 Nuts  10     40
2018.11 Bolts 20     20
2018.11 Nuts  30     30
0 голосов
/ 21 марта 2019

Если ваша таблица упорядочена по дате (в вашем примере по убыванию), вы можете использовать запрос ниже. В противном случае вы можете просто заказать его, используя date xdesc перед выполнением запроса.

q) update ytd:reverse sums reverse num by date.year,name from t 
...