In Fivetran, what do the Allow All, Allow Columns and Block All schema change settings do?
answer
- three positions, permissive to restrictive
- tables and columns are separate decisions
- the middle setting is the usual default
- the strict one fails silently, not loudly
basics
~20 sThey set how much new source structure a connector propagates automatically. Allow All admits new tables and new columns, Allow Columns admits new columns only in already-synced tables, and Block All admits neither until someone enables them explicitly.
solid answer
~50 sFivetran's per-connector **schema change handling** decides what happens when the source grows structure the connector has not seen before. **Allow All** auto-adds newly appearing tables *and* newly appearing columns, and issues the destination DDL for them. **Allow Columns** keeps the table list under your control but lets new columns in existing synced tables appear automatically. **Block All** propagates nothing new — a fresh table or column stays unsynced until a human enables it. The tradeoff is completeness versus surprise. Allow All means you never miss a field, but a chatty source can silently add tables you now pay to replicate and columns that may carry sensitive data into the warehouse. Block All gives you a governed, reviewed schema at the cost of quiet gaps: the source added a column three weeks ago and your model has never seen it. Most teams run Allow Columns as the default and pair whichever setting they choose with alerting on schema-change events.
code
text · 5 lines-- source adds: table `refunds` and column `orders.discount_amount`
Allow All -> `refunds` synced; `orders.discount_amount` created and populated
Allow Columns -> `refunds` NOT synced; `orders.discount_amount` created and populated
Block All -> neither appears; both listed as detected-but-disabledgo deeper
Know that new source tables and new source columns are two separate decisions, and that a connector can be configured to admit both, only columns, or neither.
Explain what each setting does to the destination DDL and argue the tradeoff: completeness and no missed fields versus cost, noise and unreviewed data landing in the warehouse.
Demonstrate the operational half: schema-change alerting routed to model owners, explicit column lists downstream instead of SELECT *, and the recognition that blocking changes fails silently rather than loudly.
Own it as governance — which classes of source get which policy, how PII review is enforced before new columns become queryable, and how you keep the approval queue from becoming the pipeline's bottleneck.
## The problem the setting exists for Sources change shape. A SaaS application ships a feature and adds a field; an application team runs a migration and adds a table. An ingestion pipeline has to decide, without a human in the loop at 3am, whether that new structure should appear in the warehouse. Every managed EL tool has to answer this; Fivetran answers it with a per-connector **schema change handling** policy with three settings. ## The three settings **Allow All.** The permissive end. Newly appearing tables are added to the sync, newly appearing columns in synced tables are added, and Fivetran issues the destination DDL to create them. You are guaranteed never to be missing a field because nobody noticed it appeared. **Allow Columns.** The middle position, and the usual default choice. The *table* list is curated — you decide which objects are replicated — but within those tables, new columns flow through automatically. This matches how most teams actually think: which entities matter is a deliberate decision, which attributes exist on them is the source's business. **Block All.** The restrictive end. Nothing new syncs. A new table or column is detected and left disabled until someone explicitly enables it. The warehouse schema only ever changes because a human decided it should. Whichever you pick, the setting governs *additions*. It does not make a connector immune to a genuinely breaking source change — a column being dropped or retyped at the source is a different event and needs its own handling and alerting. ## Why permissive hurts - **Cost.** New tables that arrive automatically are new rows being replicated, and under a per-changed-row consumption model that is a bill you did not approve. A source that adds a high-churn audit or event table can move your monthly consumption noticeably. - **Governance and privacy.** A source team adding a `ssn`, `date_of_birth` or free-text `notes` column gets it copied into the warehouse automatically, into a system with a different access model than the source. For regulated data this is precisely the failure mode compliance teams worry about — the data crossed a boundary with no review. - **Noise.** Analysts open a schema and find dozens of tables nobody has modelled, with no way to tell which are load-bearing. ## Why restrictive hurts - **Silent staleness.** The most common real-world failure with Block All is not an error — it is nothing happening. The source added `discount_amount` a month ago, the connector dutifully ignored it, and your revenue model has quietly been wrong. Nobody gets paged for a column that is *absent*. - **Toil.** Every source change becomes a ticket. In an org with many sources, that queue becomes the bottleneck it was meant to prevent. ## The setting is only half the answer The mature position is that the policy must be paired with **visibility**. Fivetran surfaces schema-change activity and can notify on it, and connectors typically expose their own metadata about what changed and when. Whatever the setting, someone should be able to answer "what changed in this source last week" without opening a support ticket. Concretely: - Route schema-change notifications to the team that owns the downstream models, not to a mailbox nobody reads. - Treat a new column as a *review* item even if it auto-synced: does it need masking, does it belong in a model, is it PII. - Keep downstream models defensive: select explicit column lists rather than `SELECT *`, so a new column arriving cannot silently change a model's output shape, and a disappeared column fails loudly instead of nulling. ## Choosing per connector, not globally The setting is per connector, and that is the right granularity. A well-governed internal application database whose team announces migrations can safely run Allow All. A third-party SaaS source you do not control, especially one carrying customer data, is a much better candidate for Allow Columns or Block All. A source under active regulatory scrutiny may justify Block All plus an explicit approval step, accepting the toil as the price of the control. ## What the interviewer is testing Not whether you can recite three option names — whether you understand that automatic schema propagation is a *policy* decision with a cost side and a privacy side, and that both extremes fail, just differently and on different timescales. The strongest answers name the silent-gap failure of the restrictive setting, because most candidates only think of the permissive one as risky. ## Version note Option names and the exact UI surface for schema handling have been revised more than once, and behaviour can differ by connector type. Reason from the three policy positions; confirm the current names and per-connector caveats in the vendor documentation.
- What is the risk of running Block All on a source you depend on?Silent gaps. A new column is detected and ignored, no job fails, and downstream models keep producing plausible-looking wrong numbers until someone notices. Restrictive settings need active review of pending schema changes, otherwise you have swapped a loud, fixable surprise for a quiet, long-lived error.
- Why would a privacy or compliance team object to Allow All?Because any column a source team adds is copied into the warehouse automatically, including new PII, into a system with a broader audience and a different access model than the source. There is no review step between the source's migration and the data landing. Regulated sources usually justify a narrower setting plus explicit approval and masking.
- Does automatic column propagation protect you from a source dropping or retyping a column?No. These settings govern additions. A dropped column stops being populated and a retyped one forces a reconciliation with the destination's column type — both are separate events that need their own alerting and, downstream, models that reference explicit columns so the breakage surfaces immediately rather than turning into nulls.
saying these in an interview costs you the question
- Thinks the settings also handle dropped or retyped columns
- Assumes the permissive setting is always safe because more data is better
- Ignores that new auto-synced tables add consumption cost
- Never mentions the silent-gap failure of blocking changes
- Treats it as a global switch rather than a per-connector policy