Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Colunas de tipo inteiro (e outros) devem poder ser buscáveis #492

Open
turicas opened this issue Nov 4, 2020 · 0 comments
Open

Colunas de tipo inteiro (e outros) devem poder ser buscáveis #492

turicas opened this issue Nov 4, 2020 · 0 comments

Comments

@turicas
Copy link
Owner

turicas commented Nov 4, 2020

Hoje o trigger que popula o vetor search_data só funciona se apenas colunas de texto (TextField e CharField) estiverem como searchable = True; se alguma coluna IntegerField (ou de outro tipo) estiver habilitada para busca, temos um erro durante a importação dos dados:

$ python manage.py import_data --no-input socios-brasil cnae_cnpj data/output/cnae_cnpj.csv.gz
Importing data to new table data_sociosbrasil_cnaecnpj_eujzfrcz
Importing data: 2.53Gbytes [01:07, 37.3Mbytes/s]
ERROR: ERROR:  column "cnae" is not of a character type
CONTEXT:  COPY data_sociosbrasil_cnaecnpj_eujzfrcz, line 2: "00000000000191,6422100,t"

Precisamos alterar o trigger para que ele consiga também indexar colunas não textuais. Essa resposta no stackoverflow parece dar conta do recado (teríamos que criar uma função específica para cada Table), que parece ser baseada na documentação do PostgreSQL (exemplo no fim da seção "12.4.3. Triggers for Automatic Updates").

Exemplo de arquivo para ser importado (cnae_cnpj.csv):

cnpj,cnae,primaria                                                                                                    
00000000000191,6422100,t                                                                                              
00000000000272,6421200,t                                                                                              
00000000000353,6422100,t                                                                                              
00000000000434,6422100,t                                                                                              
00000000000515,6421200,t                                                                                              
00000000000604,6422100,t                                                                                              
00000000000787,6422100,t                                   
00000000000868,6422100,t                                                                                              
00000000000949,6421200,t   

Exemplo de fields.csv (para ser importado com python manage.py update_fields_from_csv):

dataset_slug,description,searchable,frontend_filter,has_choices,link_template,order,null,name,options,obfuscate,show,show_on_frontend,table_name,title,type,version_name
socios-brasil,CNPJ da empresa,True,True,False,/especiais/documento/{{ cnpj|encrypt_if_needed }},1,False,cnpj,"{""max_length"": 14}",False,True,True,cnae_cnpj,CNPJ,string,2020
socios-brasil,CNAE associada à empresa,True,True,False,,2,False,cnae,{},False,True,True,cnae_cnpj,CNAE,integer,2020
socios-brasil,Indicativo se a CNAE é primária (fiscal) para essa empresa,False,True,True,,3,False,primaria,{},False,True,True,cnae_cnpj,CNAE é primária (fiscal)?,bool,2020

Para reproduzir:

python manage.py update_fields_from_csv fields.csv
python manage.py import_data --no-input socios-brasil cnae_cnpj cnae_cnpj.csv
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant