Pessoal,
Estou tentando um desafio particular para criar uma estrutura de dados em json a partir de um arquivo CSV. Eu solucionei parte do problema, e vou apresentá-lo abaixo:
1- Tenho um arquivo .csv com a seguinte estrutura de dados:
state_code,term,fico_range,fico_range_min,fico_range_max,interest_rate
AK,12,700-719,700,719,0.1124
AK,12,720-739,720,739,0.1074AK,12,740-759,740,759,0.1024AK,12,760-779,760,779,0.0974AK,12,780-799,780,799,0.0924AK,12,800-819,800,819,0.0874AK,12,820-850,820,850,0.0499
AK,24,700-719,700,719,0.1149
AK,24,720-739,720,739,0.1099AK,24,740-759,740,759,0.1049AK,24,760-779,760,779,0.0999AK,24,780-799,780,799,0.0949AK,24,800-819,800,819,0.0899AK,24,820-850,820,850,0.0849
AK,36,700-719,700,719,0.1174
AK,36,720-739,720,739,0.1124AK,36,740-759,740,759,0.1074AK,36,760-779,760,779,0.1024AK,36,780-799,780,799,0.0974AK,36,800-819,800,819,0.0924AK,36,820-850,820,850,0.0874
AK,48,700-719,700,719,0.1199
AK,48,720-739,720,739,0.1149AK,48,740-759,740,759,0.1099AK,48,760-779,760,779,0.1049AK,48,780-799,780,799,0.0999AK,48,800-819,800,819,0.0949AK,48,820-850,820,850,0.0899
AK,60,720-739,720,739,0.1199
AK,60,740-759,740,759,0.1149AK,60,760-779,760,779,0.1099AK,60,780-799,780,799,0.1049AK,60,800-819,800,819,0.0999AK,60,820-850,820,850,0.0949
Obs: coloquei a coloração para que fique claro que para cada item no campo term, temos praticamente os mesmos campos Range_min e Fico_Range_max, com seu respectivo interest_rate. Notem que essa configuração toda, refere-se ao mesmo state_code (AK). Então, basicamente, temos uma estrutura de dados que deveria sair assim:
{
"stateCode" : "AK",
"mincreditscore" : "700",
"maxcreditscore" : "719",
"interestrate" : {
"12" : "0.1024",
"24" : "0.1149",
"36" : "0.1174"
"48" : "0.1199"
}
}
{
"stateCode" : "AK",
"mincreditscore" : "720",
"maxcreditscore" : "739",
"interestrate" : {
"12" : "0.1074",
"24" : "0.1099",
"36" : "0.1124"
"48" : "0.1149"
"60" : "0.1199"
}
}
{
"stateCode" : "AK",
"mincreditscore" : "740",
"maxcreditscore" : "759",
"interestrate" : {
"12" : "0.1024",
"24" : "0.1049",
"36" : "0.1074"
"48" : "0.1099"
"60" : "0.1149"
}
}
e assim por diante...
Bom, sobre como vou montar esse json, eu poderia fazer com um echo ou printf, porém, decidi ler diretamente o arquivo utilizando a ferramenta jq.
tail -n +2 jqlookup.csv | jq -Rsn '
{"occurrences":
[inputs
| . / "\n"
| (.[] | select(length > 0) | . / ",") as $input
| {"product": "5a014b7094a4a92ba5fba4e1", "stateCode": $input[0], "mincreditscore": $input[3], "maxcreditscore": $input[4], "interestrate": {"12": $input[5], "24": $input[5], "36": $input[5]}}]}'
O que obviamente não deu certo, pois ele monta a estrutura linha a linha, conforme solicitado no comando acima.
O que eu preciso é que dentro da estrutura, seja possível capturar as propriedades do campo interestrate de acordo com o term, ou seja, para cada fico_range, eu possa agrupar os valores de term (12,24,36,48 ou 60) juntoc om o fico_range e colocar o valor de interest_rate. para produzir aquela saída que exemplifiquei.
Não precisa ser com jq... pode ser com printf, echo... desde que seja produzida a estrutura acima.
Muito obrigado desde já!
--
George Robinson
Analista de Suporte
Tel: +55 (21) 97449-8138
_______________________________________________