Parent: #2120
Depends on: #2131 (phase 4)
Goal
Add the hub-side counterpart to phase 4: `HubSetup_v1_4.kql` exposing FOCUS 1.4-preview-shaped functions.
Scope
`HubSetup_v1_4.kql` (new)
- Copy `HubSetup_v1_3.kql` and rename `_v1_3` -> `_v1_4`, `FOCUS 1.3` -> `FOCUS 1.4-preview`.
- `Costs_v1_4()`: union `Costs_final_v1_4` with the existing v1_3, v1_2, and v1_0 final tables. The final `| project` drops `ProviderName` and `PublisherName` since they are removed in 1.4. The v1_3 / v1_2 / v1_0 union arms drop those columns by exclusion (the project list doesn't reference them).
- `ContractCommitment_v1_4()`: union `ContractCommitment_final_v1_4` with `ContractCommitment_final_v1_3` extending v1_3 data with empty/null defaults for the 14 new FOCUS 1.4 columns.
- Other functions (Prices, CommitmentDiscountUsage, Recommendations, Transactions): rename only — no FOCUS 1.4 changes for those datasets.
Latest aliases policy
Do NOT retarget `HubSetup_Latest.kql` to v1_4. Per the upgrade procedure (data-model.md preview convention), unversioned aliases stay pinned to the latest GA schema (v1_3) until the v1_4 preview promotes to GA.
Wiring
- Add `v1_4: loadTextContent('scripts/HubSetup_v1_4.kql')` to `app.bicep`.
- Add to `.build.config` file list.
Branch
`flanakin/focus14-phase5-hubs-1.4` off `flanakin/focus14-phase4-ingestion-1.4`. PR target: phase 4 branch.
Done when
- New file deploys cleanly.
- Pester tests pass.
- Bicep compiles.
- `Costs()` still returns v1_3 schema (Latest stayed pinned).
Parent: #2120
Depends on: #2131 (phase 4)
Goal
Add the hub-side counterpart to phase 4: `HubSetup_v1_4.kql` exposing FOCUS 1.4-preview-shaped functions.
Scope
`HubSetup_v1_4.kql` (new)
Latest aliases policy
Do NOT retarget `HubSetup_Latest.kql` to v1_4. Per the upgrade procedure (data-model.md preview convention), unversioned aliases stay pinned to the latest GA schema (v1_3) until the v1_4 preview promotes to GA.
Wiring
Branch
`flanakin/focus14-phase5-hubs-1.4` off `flanakin/focus14-phase4-ingestion-1.4`. PR target: phase 4 branch.
Done when