Refreshing, appending and combining data

Quick ML: machine learning on your iPhone and iPad

5 min read

Published Sep 6 2026


17
0
0
0

ChartsClusteringImagesK-MeansLinear RegressionLogistic RegressionMachine LearningNeural NetworksRandom ForestsStatisticsSupervised LearningUnsupervised Learning

Data rarely stays still. This chapter covers what happens after the first import: pulling fresh rows from a live source, stacking another file underneath, pulling in columns from a lookup table, and joining two projects together.


The Data Source screen

On the Data screen, the Data Source section shows where the data came from and when it was last refreshed. Tap the row to open the settings. Files and the sample data cannot refresh, because there is nothing to fetch. Web, Kaggle, PostgreSQL and combined-project sources can.


The four refresh modes

The On refresh picker decides what a refresh does.

Mode

What it does

Best for

Replace All

Downloads everything again and rebuilds through your recipe

A source whose columns never change shape

Append New

Fetches only what changed and adds it as a recipe step

Data that only grows, like a log

Merge on Key

Fetches the changes, replacing rows whose key already exists

Data that changes in place, like orders with a status

Keep History

Fetches the whole thing every time and keeps every copy, stamped with the time

A page that only ever shows the present


Append New and Merge on Key work best with a source that can filter by date, using the {last_sync} placeholder described in the previous chapters. Merge on Key needs you to pick the key column, and it never deletes rows: a row that vanished at the source stays in your data until you do a Replace All.


Keep History, or turning a snapshot into a time series

Keep History is my favourite of the four. Plenty of pages only ever show today's table: a league standing, a price list, a leaderboard. There is no way to ask them what changed. Keep History fetches the whole table on every refresh and appends it underneath the copies already collected, stamping every row in a date column called snapshot_time with the moment the refresh started.

After a few refreshes you have a time series where before you had a snapshot. That stamped column feeds the date parts, lag and rolling columns in chapter 7, the Time Series dashboard tile, and the time-ordered split that turns on the Forecast chart in the last chapter.

An unchanged page is still collected again, on purpose. A reading is a reading, and skipping the duplicates would put holes in an evenly spaced series. If your rows carry ids and you only want the changes, Merge on Key is the better choice.


Refreshing in the background

Append New, Merge on Key and Keep History offer a Refresh in background toggle. iOS grants apps short windows of background time when it feels like it, so this is a bonus rather than a schedule. Replace All is deliberately left out, because a full rebuild does not fit in a thirty-second window. There is also a Retrain models after refresh toggle if you want the models to keep up.


Appending another file

Back on the Data screen, Append Another File stacks the rows of a second file underneath the first, matching columns by name. It is the natural move for a train.csv and test.csv pair, or for monthly exports. The file is stored beside the original so every one of your devices replays the same append.


Adding lookup columns

Add Lookup Columns is a left join in plain clothes. Pick a file, choose which column in your data matches which column in the file, and tick the columns you want to pull in. Rows without a match keep the new columns empty.

The sheet also offers Summary Columns: the number of matching rows, or the sum, average, minimum or maximum of one of the lookup file's columns across every match. A Flexible key matching option ignores case and stray spaces and treats 7, 7.0 and 007 as the same key, which is the kind of thing that saves an afternoon.

The preview shows the real match count before you commit. Both append and lookup are Pro features, and both land in the recipe like any other step.


Combining two projects

Combine Two Projects is free, and it only appears on a project that has no data yet. Create an empty project, tap Data, tap Combine Two Projects, and pick two existing projects and a key column in each.

The Keep control offers Matching Only, Keep All Left and Keep All Right, which are an inner join and the two outer joins. Columns whose names clash gain the project's name, the way pandas adds _x and _y. The row count in the preview is the real join, run over both datasets, so what you see is what Import produces.

If your keys repeat on both sides, the preview warns you that the join will multiply rows. It is worth reading that warning. The combined project is refreshable, refreshing each parent that can refresh and re-running the join, and it can be combined again with a third project.


Rebuild From Source

One last button on the Data Source screen is Rebuild From Source. It replays your recipe on the original file from the first step. You should rarely need it, but if the table ever looks out of step with its recipe, this is the reset.

© 2025 SimpleSteps.guide
AboutFAQPoliciesContact