У меня есть запрос, связанный с суммированием значения на основе группы данных, доступных в CSV-файле.
Мой файл - файл test.csv, и данные выглядят так, как показано ниже, где первая строка представляет собой заголовок, а затем на 6 строк данных.
EntryId,datasource,Id,bookID,securId,Type,transfer,event,ActivityType,curr_code,sourceSystemDate,actualDate,accNumber,dr_cr_Type,dr_cr_Amount,remarks,asOfDate,custregion,custName,GLSuffix,product,Code,Domicile,departCode,TXT1,TXT2,TXT3
2582327_INR_20200305_20200305,IND_DATA,2582328,GAS_REGRESSION_CURVE,CL,NYLON Future (O),42267,NA,,INR,2020-03-05T00:00:00+05:00,2020-03-05T00:00:00+05:00,1941062,Credit,340,Settlement,2020-03-05T00:00:00+05:00,PM Clearing,PM Clearing,Unrealized,GAS,N,Broker_PM Clear_3784,,2020-06-01,2020-05-19,
2582328_USD_20200305_20200305,IND_DATA,2582328,GAS_REGRESSION_CURVE,CL,NYLON Future (O),42267,NA,,INR,2020-03-05T00:00:00+05:00,2020-03-05T00:00:00+05:00,1941062,Debit,900,Settlement,2020-03-05T00:00:00+05:00,PM Clearing,PM Clearing,Unrealized,GAS,N,Broker_PM Clear_3784,,2020-06-01,2020-05-19,
2582327_INR_20200305_20200305,IND_DATA,2582328,GAS_REGRESSION_CURVE,CL,NYLON Future (O),42267,NA,,INR,2020-03-05T00:00:00+05:00,2020-03-05T00:00:00+05:00,1941062,Credit,300,Settlement,2020-03-05T00:00:00+05:00,PM Clearing,PM Clearing,Unrealized,GAS,N,Broker_PM Clear_3784,,2020-06-01,2020-05-19,
2582328_USD_20200305_20200305,IND_DATA,2582328,GAS_REGRESSION_CURVE,CL,NYLON Future (O),42267,NA,,INR,2020-03-05T00:00:00+05:00,2020-03-05T00:00:00+05:00,1941062,Debit,10,Settlement,2020-03-05T00:00:00+05:00,PM Clearing,PM Clearing,Unrealized,GAS,N,Broker_PM Clear_3784,,2020-06-01,2020-05-19,
2582328_USD_20200305_20200305,IND_DATA,2582329,GAS_REGRESSION_CURVE,CL,NYLON Future (O),42267,NA,,INR,2020-03-05T00:00:00+05:00,2020-03-05T00:00:00+05:00,1941062,Debit,20,Settlement,2020-03-05T00:00:00+05:00,PM Clearing,PM Clearing,Unrealized,GAS,N,Broker_PM Clear_3784,,2020-06-01,2020-05-19,
2582328_USD_20200305_20200305,IND_DATA,2582329,GAS_REGRESSION_CURVE,CL,NYLON Future (O),42267,NA,,INR,2020-03-05T00:00:00+05:00,2020-03-05T00:00:00+05:00,1941062,Credit,20,Settlement,2020-03-05T00:00:00+05:00,PM Clearing,PM Clearing,Unrealized,GAS,N,Broker_PM Clear_3784,,2020-06-01,2020-05-19,
Некоторые команды, которые я пробовал:
$ sed '1d' test.csv | awk -F ',' '$14=="Credit"{k = $1","$2","$3; x[k]+=$15; } END{for(k in x){print x[k]}}'
640
20
$ sed '1d' test.csv | awk -F ',' '$14=="Debit"{k = $1","$2","$3; x[k]+=$15; } END{for(k in x){print x[k]}}'
910
20
Теперь мне нужно вычислить два баланса:
1) сумма кредита сальдо в поле 15, сгруппированное по первым 3 полям
2) сумма дебетового сальдо в поле 15, сгруппированное по первым 3 полям
Если сальдо не совпадают, то следует отобразить все строки, содержащие поля группировки, например, 1,2,3.
Я хочу сделать это в одном выражении awk с условиями if, но я не уверен, как это сделать.
В В случае, если дебетовое сальдо не равно кредитному сальдо, следует напечатать все строки, соответствующие полям группировки.
В приведенных выше командах вы видите, что выходные данные не совпадают, поэтому все строки, имеющие отношение к к этому несоответствию h должен быть напечатан (в этом случае первые 4 строки)
Ожидаемый результат в вышеприведенном случае должен быть:
2582327_INR_20200305_20200305,IND_DATA,2582328,GAS_REGRESSION_CURVE,CL,NYLON Future (O),42267,NA,,INR,2020-03-05T00:00:00+05:00,2020-03-05T00:00:00+05:00,1941062,Credit,340,Settlement,2020-03-05T00:00:00+05:00,PM Clearing,PM Clearing,Unrealized,GAS,N,Broker_PM Clear_3784,,2020-06-01,2020-05-19,
2582328_USD_20200305_20200305,IND_DATA,2582328,GAS_REGRESSION_CURVE,CL,NYLON Future (O),42267,NA,,INR,2020-03-05T00:00:00+05:00,2020-03-05T00:00:00+05:00,1941062,Debit,900,Settlement,2020-03-05T00:00:00+05:00,PM Clearing,PM Clearing,Unrealized,GAS,N,Broker_PM Clear_3784,,2020-06-01,2020-05-19,
2582327_INR_20200305_20200305,IND_DATA,2582328,GAS_REGRESSION_CURVE,CL,NYLON Future (O),42267,NA,,INR,2020-03-05T00:00:00+05:00,2020-03-05T00:00:00+05:00,1941062,Credit,300,Settlement,2020-03-05T00:00:00+05:00,PM Clearing,PM Clearing,Unrealized,GAS,N,Broker_PM Clear_3784,,2020-06-01,2020-05-19,
2582328_USD_20200305_20200305,IND_DATA,2582328,GAS_REGRESSION_CURVE,CL,NYLON Future (O),42267,NA,,INR,2020-03-05T00:00:00+05:00,2020-03-05T00:00:00+05:00,1941062,Debit,10,Settlement,2020-03-05T00:00:00+05:00,PM Clearing,PM Clearing,Unrealized,GAS,N,Broker_PM Clear_3784,,2020-06-01,2020-05-19,
, если сальдо совпадают, то никаких действий предпринимать не нужно принято.
Спасибо и всего наилучшего,
Prasad S Billahalli