Skip to content

docs(semantic-model): audit the deploy guide for binding profiles + Spanner Graph - #365

Draft
libei wants to merge 12 commits into
GoogleCloudPlatform:mainfrom
libei:worktree-user-guide-update
Draft

docs(semantic-model): audit the deploy guide for binding profiles + Spanner Graph#365
libei wants to merge 12 commits into
GoogleCloudPlatform:mainfrom
libei:worktree-user-guide-update

Conversation

@libei

@libei libei commented Aug 30, 2026

Copy link
Copy Markdown
Collaborator

What

Holistic audit + revision of the non-codelab semantic-model user guide against
the semantic-model / Spanner-deploy PRs merged today (#357/#358 binding
profiles, #361 Spanner Graph target, #363 physical-column KEYs, #366 source-URI
reduction). Docs only. Rebased onto main (includes #366), so every claim
is backed by landed code.

README / reference.md

  • Link the binding-profiles guide; document --profile; correct --target
    (an explicit --target spanner/bq with no matching model is a hard error,
    not a quiet no-op); state the Spanner-native resource-name source is
    supported, not "planned."

profiles.md — reconciled with Spanner deployment

  • Scope: removed a "bind to a non-graph store → merged and reported, not
    deployed" path that has no implementation. A deployment target must name a
    BigQuery Graph or Spanner Graph URI (validate.ts:38-53); those are the two
    graph backends.
  • Command line: added --target spanner; corrected the orthogonality
    framing — the graph backend is fixed by the profile's deployment_target, so
    --target bq on a Spanner-bound profile is an error, not a redirect; only
    --target kc is universal.
  • Sources / notes: clarified how a source URI resolves per backend
    (BigQuery keeps the full path; Spanner reduces to the bare table name);
    replaced the aspirational "engine lowers each expression at runtime" with what
    actually happens (GoogleSQL emitted as written; --transpile converts vendor
    SQL at push).
  • Contract table: reorganized by model element (physical vs logical per row);
    consolidated the follow-on prose and fixed an off-example metric to the doc's
    own AVG(Customer.lifetimeValue).

Verification

Claim-by-claim audit against the code (commands.ts, loader.ts, validate.ts,
resolve_profiles.ts, spanner.ts, bigquery.ts). Everything else in the guide
verified CONFIRMED. Spanner unit tests 17/17 on the rebased branch.

@libei
libei force-pushed the worktree-user-guide-update branch from 33aaa00 to f5404e8 Compare August 30, 2026 03:58
@libei libei changed the title docs(semantic-model): update the user guide for profiles + Spanner, and fix spanner:// source reduction docs(semantic-model): audit the deploy guide for binding profiles + Spanner Graph Aug 30, 2026
@libei
libei force-pushed the worktree-user-guide-update branch from 1a36de2 to 295b3fa Compare August 30, 2026 04:34
libei added 12 commits August 30, 2026 06:45
…only

Binding-profile guide predated Spanner push (GoogleCloudPlatform#361): its scope note and example
said only a BigQuery-bound profile deploys. A profile now routes to whichever
backend its deployment target names, so the operational (Spanner) profile
deploys too. Update the scope note, the source-URI explanation (final-segment
reduction now works for a spanner:// source), the example prose, the CLI
comment, and the availability/validation notes (the live source probe is
BigQuery-only).
…rget

- Scope: drop the non-existent 'non-graph store merged-but-not-deployed' path;
  deployment target must name BigQuery Graph or Spanner Graph.
- Command line: add --target spanner; the graph backend is fixed by the
  profile's deployment_target, so --target is not a free redirect.
- Notes: expressions are GoogleSQL emitted as written (--transpile converts
  vendor SQL), not lowered per-store by a runtime engine.
Reorder into a three-part arc: a short concept intro (mental model folded in),
the concrete two-binding walkthrough early, the two rules (contract +
availability), then reference (command line, source URIs, merge rules,
validation, details). Collapse the 'profile = physical binding' idea from four
restatements to one, fold 'How it works' and 'File layout' into the intro and
walkthrough, and move the unbound-vs-null / explicit-unbound nuance into a
Details reference section.
Keep the product names at a high level in narrative prose (BigQuery,
Spanner) rather than BigQuery Graph / Spanner Graph. The fuller feature
names stay in the walkthrough/example sections, code comments, program
output, and the codelab, where a concrete example names the concrete
feature.
The intro and the 'different backends' bullet cited a 'revenue' metric
the doc never defines; use order_count, which the walkthrough model
declares and which both bindings can answer.
…rm#367/GoogleCloudPlatform#368)

A --target kc push now accepts a purely logical model (no bindings, no
deployment target) and publishes it to Knowledge Catalog. Update the guide:

- README: deployment target and sources are required only for a graph leg;
  a --target kc push governs the logical model and needs neither.
- reference: the deployment-target and live-source checks are graph-scoped;
  the KC leg accepts a logical-only model (an omitted source publishes with
  no linked resource; an unbound: placeholder is written verbatim).
- owl-import: an imported model can be published to Knowledge Catalog as-is;
  binding is required only to deploy a graph.
The codelab and profiles guide already author with the first-class
`deployment_target:` key and the `entities:` alias (loader sugars from GoogleCloudPlatform#361).
Bring the README authoring walkthrough and the reference class-hierarchy
example onto the same readable form, and note that the equivalent GOOGLE
custom_extensions deploymentTargets block still works.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant