Add dataset merge as a command

This commit is contained in:
Inigo Flores 2020-11-18 20:33:04 +01:00
parent 9fb8ab2996
commit eb4dafb921
4 changed files with 121 additions and 24 deletions

View File

@ -9,10 +9,10 @@ class Config
const DATA_FOLDER ="data";
const ARCHIVE_FOLDER = "archive";
const SOURCE_FILE = "caj_esp_0%d%d.zip";
const DEST_FILE = "codigos_postales_municipios";
const DEST_FILE_ENTIDADES = "codigos_postales_municipios_entidades";
const DEST_HISTORICAL_FILE = "codigos_postales_municipios_historical";
const DEST_HISTORICAL_FILE_ENTIDADES = "codigos_postales_municipios_entidades_historical";
const DEST_FILE = "codigos_postales_municipiosid";
const DEST_FILE_ENTIDADES = "codigos_postales_municipiosid_entidades";
const DEST_HISTORICAL_FILE = "codigos_postales_municipiosid_historical";
const DEST_HISTORICAL_FILE_ENTIDADES = "codigos_postales_municipiosid_entidades_historical";
//TRAMOS-NAL.F151231
@ -40,9 +40,69 @@ class Config
"resources" => [
[
"name" => "ds_codigos_postales_municipios",
"title"=> "Codigos postales por municipio",
"title"=> "Codigos postales y municipios asociados",
"format"=> "csv",
"path"=> "data/codigos_postales_municipios.csv",
"schema"=> [
"fields"=> [
[
"name" => "codigo_postal",
"type" => "number",
"description" => "Código Postal",
"pattern" => "[0-9]{5}"
],
[
"name" => "municipio_id",
"type" => "number",
"description" => "Código INE del municipio",
"pattern" => "[0-9]{5}"
],
[
"name" => "municipio_nombre",
"type" => "string",
"description" => "Nombre del municipio",
],
]
]
],
[
"name" => "ds_codigos_postales_municipios_entidades",
"title"=> "Códigos postales y municipios y entidades singulares asociados",
"format"=> "csv",
"path"=> "data/codigos_postales_municipios_entidades.csv",
"schema"=> [
"fields"=> [
[
"name" => "codigo_postal",
"type" => "number",
"description" => "Código Postal",
"pattern" => "[0-9]{5}"
],
[
"name" => "municipio_id",
"type" => "number",
"description" => "Código INE del municipio",
"pattern" => "[0-9]{5}"
],
[
"name" => "entidad_singular_nombre",
"type" => "string",
"description" => "Nombre entidad singular",
],
[
"name" => "municipio_nombre",
"type" => "string",
"description" => "Nombre del municipio",
],
]
]
],
[
"name" => "ds_codigos_postales_municipiosid",
"title"=> "Códigos postales y códigos INE de los municipios asociados",
"format"=> "csv",
"path"=> "data/codigos_postales_municipiosid.csv",
"schema"=> [
"fields"=> [
[
@ -61,10 +121,10 @@ class Config
]
],
[
"name" => "ds_codigos_postales_municipios_entidades",
"title"=> "Codigos postales por municipio y entidad singular",
"name" => "ds_codigos_postales_municipiosid_entidades",
"title"=> "Códigos postales y códigos INE de municipios y entidades singulares asociados",
"format"=> "csv",
"path"=> "data/codigos_postales_municipios.csv",
"path"=> "data/codigos_postales_municipiosid_entidades.csv",
"schema"=> [
"fields"=> [
[
@ -80,7 +140,7 @@ class Config
"pattern" => "[0-9]{5}"
],
[
"name" => "nombre_entidad_singular",
"name" => "entidad_singular_nombre",
"type" => "string",
"description" => "Nombre entidad singular",
],
@ -89,10 +149,10 @@ class Config
]
],
[
"name" => "ds_codigos_postales_municipios_historical",
"title"=> "Histórico de codigos postales por municipio (desde 2013)",
"name" => "ds_codigos_postales_municipiosid_historical",
"title"=> "Histórico de códigos postales y códigos INE de municipios asociados (desde 2013)",
"format"=> "csv",
"path"=> "data/codigos_postales_municipios_historical.csv",
"path"=> "data/codigos_postales_municipiosid_historical.csv",
"schema"=> [
"fields"=> [
[
@ -121,10 +181,10 @@ class Config
]
],
[
"name" => "ds_codigos_postales_municipios_entidades_historical",
"title"=> "Histórico de codigos postales por municipio y entidades singulares(desde 2013)",
"name" => "ds_codigos_postales_municipiosid_entidades_historical",
"title"=> "Histórico de códigos postales y códigos INE de municipios y entidades singulares asociados (desde 2013)",
"format"=> "csv",
"path"=> "data/codigos_postales_municipios_historical.csv",
"path"=> "data/codigos_postales_municipiosid_historical.csv",
"schema"=> [
"fields"=> [
[
@ -140,7 +200,7 @@ class Config
"pattern" => "[0-9]{5}"
],
[
"name" => "nombre_entidad_singular",
"name" => "entidad_singular_nombre",
"type" => "string",
"description" => "Nombre entidad singular",
],

44
scripts/lib/MergeCommand.php Executable file
View File

@ -0,0 +1,44 @@
<?php
require_once('Config.php');
use ConsoleKit\Widgets\ProgressBar;
/**
* Hace un merge con ds-organizacion-administrativa
*
*/
class MergeCommand extends ConsoleKit\Command
{
public function execute(array $args, array $options = array())
{
$box = new ConsoleKit\Widgets\Box($this->getConsole(), 'Haciendo merge con ds-organizacion-administrativagit');
$box->write();$this->getConsole()->writeln("");
shell_exec('
curl https://raw.githubusercontent.com/codeforspain/ds-organizacion-administrativa/master/data/municipios.csv \
| csvcut -c "municipio_id,nombre" \
| csvjoin -I -c "municipio_id" ../data/codigos_postales_municipiosid.csv - \
| csvcut -c "codigo_postal,municipio_id,nombre" \
> ../data/codigos_postales_municipios.csv
');
shell_exec("
sed -i 's/nombre/municipio_nombre/g' ../data/codigos_postales_municipios.csv
");
shell_exec('
curl https://raw.githubusercontent.com/codeforspain/ds-organizacion-administrativa/master/data/municipios.csv \
| csvcut -c \'municipio_id,nombre\' \
| csvjoin --snifflimit 0 -I -c "municipio_id" ../data/codigos_postales_municipiosid_entidades.csv - \
| csvcut -c "codigo_postal,entidad_singular_nombre,municipio_id,nombre" \
> ../data/codigos_postales_municipios_entidades.csv
');
shell_exec("
sed -i 's/,nombre/,municipio_nombre/g' ../data/codigos_postales_municipios_entidades.csv
");
}
}

View File

@ -1,8 +0,0 @@
#!/usr/bin/env bash
curl https://raw.githubusercontent.com/codeforspain/ds-organizacion-administrativa/master/data/municipios.csv \
| csvcut -c 'municipio_id,nombre' \
| csvjoin -I -c "municipio_id" ../data/codigos_postales_municipios.csv - \
| csvcut -c "codigo_postal,nombre_entidad_singular,municipio_id,nombre" \
> ../data/codigos_postales_municipios_join.csv

View File

@ -20,6 +20,7 @@ if (sizeof($argv)==1) {
$console->run(['download']);
$console->run(['process']);
//$console->run(['convert-to-json']); // No generamos los archivos json, alguno sobrepasa los 100 Mb (limite Github)
$console->run(['merge']);
$console->run(['update','--nojson']);
} else {
$console->run();