Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
aborruso committed Feb 15, 2024
1 parent 50217aa commit 9a66420
Show file tree
Hide file tree
Showing 6 changed files with 7 additions and 7 deletions.
2 changes: 1 addition & 1 deletion docs/blog.html
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ <h5 class="quarto-listing-category-title">Categorie</h5><div class="quarto-listi

<div class="quarto-listing quarto-listing-container-default" id="listing-listing">
<div class="list quarto-listing-default">
<div class="quarto-post image-right" data-index="0" data-categories="duckdb,csv,cli" data-listing-date-sort="1707951600000" data-listing-file-modified-sort="1708009492492" data-listing-date-modified-sort="NaN" data-listing-reading-time-sort="6" data-listing-word-count-sort="1121">
<div class="quarto-post image-right" data-index="0" data-categories="duckdb,csv,cli" data-listing-date-sort="1707951600000" data-listing-file-modified-sort="1708009623861" data-listing-date-modified-sort="NaN" data-listing-reading-time-sort="6" data-listing-word-count-sort="1121">
<div class="thumbnail">
<p><a href="./posts/csv-ventitre-gigabyte-senza-affanno/index.html" class="no-external"></a></p><a href="./posts/csv-ventitre-gigabyte-senza-affanno/index.html" class="no-external">
<p><img src="./posts/csv-ventitre-gigabyte-senza-affanno/opencup.png" class="thumbnail-image"></p>
Expand Down
2 changes: 1 addition & 1 deletion docs/blog.xml
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ font-style: inherit;">)"</span></span></code></pre></div>
<p>Alcune note su questo comando (messo su più righe, per migliorare la leggibilità):</p>
<ul>
<li>si parte dal comando precedente, con il filtro per estrarre il campione;</li>
<li>si passa l’output a <code>duckdb</code>, che legge il <code>CSV</code> da <code>stdin</code> e nel <code>SELECT</code> al posto del nome del file è necessario inserire /dev/stdin, che è il file virtuale che rappresenta lo standard input;</li>
<li>si passa l’<em>output</em> a <code>duckdb</code>, che legge il <code>CSV</code> da <code>stdin</code> e nel <code>SELECT</code> al posto del nome del file è necessario inserire <code>'/dev/stdin'</code>, che è il file virtuale che rappresenta lo <em>standard input</em>;</li>
<li>si usa il comando <code>COPY</code> per copiare questa selezione in un file <code>parquet</code> chiamato <code>regione_siciliana.parquet</code>, con compressione <code>ZSTD</code> e con un <code>ROW_GROUP_SIZE</code> di <code>100000</code>.</li>
</ul>
<p>Tutto circa sempre in un minuto e mezzo, con un file di <em>output</em> che pesa circa 33 MB, contro i 530 MB del file <code>CSV</code>.</p>
Expand Down
4 changes: 2 additions & 2 deletions docs/posts/csv-ventitre-gigabyte-senza-affanno/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -348,7 +348,7 @@ <h2 class="anchored" data-anchor-id="un-file-parquet-a-partire-dai-dati-filtrati
<p>Alcune note su questo comando (messo su più righe, per migliorare la leggibilità):</p>
<ul>
<li>si parte dal comando precedente, con il filtro per <a href="#estrazione-di-un-campione">estrarre il campione</a>;</li>
<li>si passa l’output a <code>duckdb</code>, che legge il <code>CSV</code> da <code>stdin</code> e nel <code>SELECT</code> al posto del nome del file è necessario inserire /dev/stdin, che è il file virtuale che rappresenta lo standard input;</li>
<li>si passa l’<em>output</em> a <code>duckdb</code>, che legge il <code>CSV</code> da <code>stdin</code> e nel <code>SELECT</code> al posto del nome del file è necessario inserire <code>'/dev/stdin'</code>, che è il file virtuale che rappresenta lo <em>standard input</em>;</li>
<li>si usa il comando <code>COPY</code> per copiare questa selezione in un file <code>parquet</code> chiamato <code>regione_siciliana.parquet</code>, con compressione <code>ZSTD</code> e con un <code>ROW_GROUP_SIZE</code> di <code>100000</code>.</li>
</ul>
<p>Tutto circa sempre in un minuto e mezzo, con un file di <em>output</em> che pesa circa 33 MB, contro i 530 MB del file <code>CSV</code>.</p>
Expand Down Expand Up @@ -685,7 +685,7 @@ <h2 class="anchored" data-anchor-id="note-finali">Note finali</h2>
</div>
</div>
</footer>
<script>var lightboxQuarto = GLightbox({"closeEffect":"zoom","openEffect":"zoom","descPosition":"bottom","loop":false,"selector":".lightbox"});
<script>var lightboxQuarto = GLightbox({"closeEffect":"zoom","descPosition":"bottom","loop":false,"selector":".lightbox","openEffect":"zoom"});
window.onload = () => {
lightboxQuarto.on('slide_before_load', (data) => {
const { slideIndex, slideNode, slideConfig, player, trigger } = data;
Expand Down
2 changes: 1 addition & 1 deletion docs/search.json
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@
"href": "posts/csv-ventitre-gigabyte-senza-affanno/index.html#un-file-parquet-a-partire-dai-dati-filtrati",
"title": "Lavorare con grandi file CSV compressi",
"section": "Un file parquet a partire dai dati filtrati",
"text": "Un file parquet a partire dai dati filtrati\nQuesto ultimo passo, perché è utile avere a disposizione questi dati anche in un formato più efficiente, come il parquet, che è un formato di file binario, compresso e colonnare, che permette di ridurre notevolmente lo spazio occupato e di velocizzare le operazioni di lettura e analisi. Per chi non ne ha mai sentito parlare, ne ho scritto lungamente qui.\nL’utility stavolta è duckdb. E il comando è:\nunzip -p \"OpenData Complessivo.zip\" | \\\ngrep -P '(ANNO_DECISIONE|\\|REGIONE AUTONOMA DELLA SICILIA\\|)' | \\\nduckdb -c \"COPY(\n SELECT * FROM read_csv_auto('/dev/stdin', delim = '|')\n) TO 'regione_siciliana.parquet' (\n FORMAT 'parquet',\n COMPRESSION 'ZSTD',\n ROW_GROUP_SIZE 100000\n)\"\nAlcune note su questo comando (messo su più righe, per migliorare la leggibilità):\n\nsi parte dal comando precedente, con il filtro per estrarre il campione;\nsi passa l’output a duckdb, che legge il CSV da stdin e nel SELECT al posto del nome del file è necessario inserire ‘/dev/stdin’, che è il file virtuale che rappresenta lo standard input;\nsi usa il comando COPY per copiare questa selezione in un file parquet chiamato regione_siciliana.parquet, con compressione ZSTD e con un ROW_GROUP_SIZE di 100000.\n\nTutto circa sempre in un minuto e mezzo, con un file di output che pesa circa 33 MB, contro i 530 MB del file CSV."
"text": "Un file parquet a partire dai dati filtrati\nQuesto ultimo passo, perché è utile avere a disposizione questi dati anche in un formato più efficiente, come il parquet, che è un formato di file binario, compresso e colonnare, che permette di ridurre notevolmente lo spazio occupato e di velocizzare le operazioni di lettura e analisi. Per chi non ne ha mai sentito parlare, ne ho scritto lungamente qui.\nL’utility stavolta è duckdb. E il comando è:\nunzip -p \"OpenData Complessivo.zip\" | \\\ngrep -P '(ANNO_DECISIONE|\\|REGIONE AUTONOMA DELLA SICILIA\\|)' | \\\nduckdb -c \"COPY(\n SELECT * FROM read_csv_auto('/dev/stdin', delim = '|')\n) TO 'regione_siciliana.parquet' (\n FORMAT 'parquet',\n COMPRESSION 'ZSTD',\n ROW_GROUP_SIZE 100000\n)\"\nAlcune note su questo comando (messo su più righe, per migliorare la leggibilità):\n\nsi parte dal comando precedente, con il filtro per estrarre il campione;\nsi passa l’output a duckdb, che legge il CSV da stdin e nel SELECT al posto del nome del file è necessario inserire '/dev/stdin', che è il file virtuale che rappresenta lo standard input;\nsi usa il comando COPY per copiare questa selezione in un file parquet chiamato regione_siciliana.parquet, con compressione ZSTD e con un ROW_GROUP_SIZE di 100000.\n\nTutto circa sempre in un minuto e mezzo, con un file di output che pesa circa 33 MB, contro i 530 MB del file CSV."
},
{
"objectID": "posts/csv-ventitre-gigabyte-senza-affanno/index.html#note-finali",
Expand Down
2 changes: 1 addition & 1 deletion docs/sitemap.xml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
</url>
<url>
<loc>https://aborruso.github.io/posts/csv-ventitre-gigabyte-senza-affanno/index.html</loc>
<lastmod>2024-02-15T15:04:52.492Z</lastmod>
<lastmod>2024-02-15T15:07:03.861Z</lastmod>
</url>
<url>
<loc>https://aborruso.github.io/posts/duckdb-intro-csv/index.html</loc>
Expand Down
2 changes: 1 addition & 1 deletion posts/csv-ventitre-gigabyte-senza-affanno/index.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ duckdb -c "COPY(
Alcune note su questo comando (messo su più righe, per migliorare la leggibilità):

- si parte dal comando precedente, con il filtro per [estrarre il campione](#estrazione-di-un-campione);
- si passa l'output a `duckdb`, che legge il `CSV` da `stdin` e nel `SELECT` al posto del nome del file è necessario inserire '/dev/stdin', che è il file virtuale che rappresenta lo standard input;
- si passa l'*output* a `duckdb`, che legge il `CSV` da `stdin` e nel `SELECT` al posto del nome del file è necessario inserire `'/dev/stdin'`, che è il file virtuale che rappresenta lo *standard input*;
- si usa il comando `COPY` per copiare questa selezione in un file `parquet` chiamato `regione_siciliana.parquet`, con compressione `ZSTD` e con un `ROW_GROUP_SIZE` di `100000`.

Tutto circa sempre in un minuto e mezzo, con un file di *output* che pesa circa 33 MB, contro i 530 MB del file `CSV`.
Expand Down

0 comments on commit 9a66420

Please sign in to comment.