Semantic layer relations#358
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Objective update the Teradata MCP Server Community Edition Semantic Layer to support relations and conditional join expansion while preserving the lightness of the current MCP Solution.
This gives us a MCP-first semantic layer definition: declared in a config file, exposed as a set of MCP tools and resources, and accessible to any agentic framework regardless of the degree of integration with Teradata.
In this release:
1. We stick to the "Cube" concept as a container for the relations/measures/dimensions.
2. Update the
sqlmeaning so it represents either a database table/view or a query3. add
joinsthat describe joined objects (table/views/queries)4. dimensions and measures refer to the objects defined in the main source (
name) or joins (joins.name)5. Joins are only materialised if needed by a dimension/measure, or if
optional: false.optionalis an optional parameter and its default for istrue6. All common SQL join types are available
7. Parameters are defined at the cube level and can be referenced in any
sql(if they are used against a joined object, then this join is materialised). Parameters may be optional (in that case and if present in the compiled SQL, they are valued NULL) or have a default value (in that case they are optional but always supplied with the default value to the compiler. That may result in the join referencing it to be always materialised).8. Example of YAML description: