What is FTAC?
FTAC, the Fabric Terraform Actions Compiler, turns a *-pipeline.yaml written in GitHub Actions vocabulary into the pipeline-content.json that the microsoft/fabric Terraform provider expects for a Microsoft Fabric data pipeline.
Why
A Fabric pipeline is a few hundred lines of nested JSON with SQL and ADF expressions buried inside string literals. Reviewing a change in Git means diffing that JSON.
FTAC generates that JSON from sources you can actually read:
- SQL stays SQL.
- Expressions are
${{ }}withinputs,vars,envandsteps.x.outputs. - The activity graph is a list of steps with
needs.
The generated JSON is committed next to its source. A check target verifies it is in sync, so CI fails when someone edits the JSON by hand or forgets to rebuild.
What a pipeline looks like
yaml
name: Hello_Pipeline
output: hello.json
inputs:
date: { type: string, default: '' }
vars:
date: String
env:
POSTGRES: 00000000-0000-0000-0000-000000000000
datasets:
out:
csv: { lakehouse: brz_lakehouse, folder: Hello, file: hello.csv }
steps:
- id: set_date
uses: fabric/set-variable
with: { name: date, value: "${{ if(empty(inputs.date), formatDateTime(utcNow(), 'yyyy-MM-dd'), inputs.date) }}" }
- id: load
needs: set_date
uses: fabric/copy
with:
source:
postgres:
connection: ${{ env.POSTGRES }}
query: SELECT 1 AS one WHERE ${{ sql(vars.date) }}::date <= CURRENT_DATE
sink:
csv: outEach uses: names a built-in action. Each action page shows its inputs, an example, and the Fabric JSON the example compiles to.