Attempt to re-create SIRENE daily updates from INSEE API (https://api.insee.fr/) for october 2019.
There are a lot of manuals operations ; and it generates result analysis to compare with stocks provided by INSEE.
Results can be seen here:
Ruby & PostgreSQL are mandatory. Install Ruby gems with bundle install
From SIRENE page on data.gouv.fr download :
- Fichier StockEtablissement du 01 XXX 20XX
- Fichier StockUniteLegale du 01 XXX 20XX
and also for the next or previous month :
- Fichier StockEtablissement du 01 XXX+1 20XX
- Fichier StockUniteLegale du 01 XXX+1 20XX
Then store & extract them in /stocks
directory named like this :
- StockEtablissement_previous.csv
- StockEtablissement_latest.csv
- StockUniteLegale_previous.csv
- StockUniteLegale_latest.csv
run :
ruby fetch_daily_updates_to_csv.rb
it generates daily updates CSV files for each day from INSEE API for établissements and unités légales
It will create/drop a database so it should be run by a Postgres SUPERUSER.
In both generate_stock_unites_legales.sql
and generate_stock_etablissements.sql
:
- in both files ; update
current_directory
(line 54/59) with your current directory (pwd
) - if you run this script with a SUPERUSER then
stocks_generated
directory should allow everyone to write on it (chmod 777 -R stocks_generated
) - run
psql -v scriptdir="$(pwd)/" -f generate_stock_unites_legales.sql
- run
psql -v scriptdir="$(pwd)/" -f generate_stock_etablissements.sql
- change back owner if needed ! (
sudo chown you:you -R stocks_generated
)
Previous month stocks + daily updates are generated in /stocks_generated
.
run to sort these files in order to compare them :
sort -t , -k 1n stocks_generated/UnitesLegales.csv > stocks_generated/UnitesLegales_sorted.csv
sort -t , -k 3n stocks_generated/Etablissements.csv > stocks_generated/Etablissements_sorted.csv
run compare_stocks.rb
: compare files and generate HTML differences
- quelques timeout sont arrivés lors de la récupération des daily updates (qui peuvent être du au rate limiting)
- les entreprises passant de 'diffusibles' à 'non-diffusibles' et vice et versa rend l'analyse complexe (+9000 entreprises en plus dans le stock généré)
Trié en ordre d'importance (aucun ordre de grandeur désolé), en tout moins de 1% d'erreurs :
- Le stock généré contient bien des entreprises non-diffusibles (ie: 304371800 / 311861975 / 305313348). <= la très large majorité des écarts
- Il y a de nombreuses différences sur les dates de derniers traitements :
- ça peut être du au fait que les daily update n'ont pas été générée au bon moment
- les dates qui posent problèmes sont en fin de mois
- certaines entreprises apparaissent dans le nouveau stock qui sortent de nul part :
- 312030257 ; aucune date de dernier traitement et l'entreprise date de 1978 fermée depuis)
- 312030273 : dernier traitement 2007 aussi fermée
- des corrections 'techniques' ; ajouts de guillements (ie: 322087750 ; 'GFA DES WACQUES' => 'GFA "DES WACQUES"' / 309467611)