apache / apache/ossie

Proposal: ThoughtSpot converter (bidirectional, TML ↔ Ossie)

Open
#285 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
2.1k
Forks
267
Avg merge
4d 20h
Merged PRs (30d)
24

Description

ThoughtSpot would like to contribute a converter between ThoughtSpot's semantic model format (Model TML + Table TML, YAML) and the Ossie semantic model, following the established converter pattern.

## Scope

- **Bidirectional**: `tml_to_ossie` (import) and `ossie_to_tml` (export)
- **File-to-file, Python**, mirroring the `converters/databricks` package shape (fixtures including a TPC-DS pair, roundtrip + property-based tests, per-converter CI workflow)
- **`custom_extensions` with `vendor_name: THOUGHTSPOT`** for lossless roundtrip of ThoughtSpot-only concepts; one row added to the well-known vendor examples table in `core-spec/spec.md`
- **Mapping docs before code**: a construct-mapping document and an expression/function-mapping document (each function in `core-spec/expression_language.md` classified as direct ThoughtSpot formula equivalent, requiring a SQL passthrough function, or unmappable → converter issue) will be posted on this issue for community review **before** the code PR

## Proposed mapping sketch (high level)

| Ossie | ThoughtSpot |
|---|---|
| `datasets` | Model `model_tables` + Table TML (physical `source`) |
| `fields` | table columns / ATTRIBUTE formulas |
| `metrics` | MEASURE columns / formulas |
| `relationships` | Model `joins` |
| `ai_context` | synonyms, Spotter instructions |
| `custom_extensions[THOUGHTSPOT]` | join types, aggregation defaults, formats, other ThoughtSpot-only metadata |

Happy to adjust scope/shape based on feedback — the mapping documents will follow as comments on this issue.

— Damian Waldron (ThoughtSpot); damian.waldron@thoughtspot.com on the dev list.

Contributor guide

Open the contributing guide

Research direction

Start by reading the converters/databricks package shape and the proposed mapping sketch. Review the construct-mapping and expression/function-mapping documents when posted, then use the TPC-DS fixtures, roundtrip and property-based tests, and per-converter CI workflow as completion checks; also verify the THOUGHTSPOT vendor row in core-spec/spec.md and the related expression-language coverage.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
data, tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.