Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ updates:
directories:
- "/python"
- "/converters/cube"
- "/converters/databricks/python"
- "/converters/dbt"
- "/converters/gooddata"
- "/converters/honeydew"
Expand Down
32 changes: 0 additions & 32 deletions .github/workflows/converter-databricks-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,38 +39,6 @@ permissions:
contents: read

jobs:
python:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.11", "3.12", "3.13", "3.14"]
defaults:
run:
working-directory: converters/databricks/python

steps:
- name: Checkout project
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: ${{ matrix.python-version }}

- name: Install uv
uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
with:
version: "0.12.19"

- name: Sync dependencies
run: |
uv sync

- name: Unit Tests
run: |
uv run pytest

java:
runs-on: ubuntu-latest
defaults:
Expand Down
4 changes: 1 addition & 3 deletions converters/databricks/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,5 @@ Layout
| Path | Language | Role |
|------|----------|------|
| [`java/`](java/) | Java | The maintained implementation; also ships a command-line tool (`OssieDatabricksConverter`). |
| [`python/`](python/) | Python | The original reference implementation. To be deprecated. |

See [`java/README.md`](java/README.md) and [`python/README.md`](python/README.md) for building and
using each implementation.
See [`java/README.md`](java/README.md) for building and using it.
5 changes: 2 additions & 3 deletions converters/databricks/java/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,7 @@ semantic model and a Databricks
[Unity Catalog Metric View](https://docs.databricks.com/aws/en/metric-views/) (YAML `1.1`). Pure
YAML text in, YAML text out: it reads and writes the two formats as parsed maps and lists.

The directions are named from the Apache Ossie model's point of view, matching the
[Python converter](../python/README.md):
The directions are named from the Apache Ossie model's point of view:

- **Export** (`OssieToMetricView`): Apache Ossie -> Metric View (one fact `source` with a nested
`joins` tree and a flat `dimensions` list).
Expand Down Expand Up @@ -112,7 +111,7 @@ Each row maps in both directions; the **Notes** flag where a behavior is specifi
| model `description` | `comment` | Model-level description only. |
| root dataset | `source` | The fact/grain. |
| other `datasets` | nested `joins[]` | Export: the relationship graph is reassembled into the join tree; a dataset reached by two paths (a diamond) fans out into one aliased join per path. |
| `relationship` `from_columns`/`to_columns` | join `on` (differing names) / `using` (shared names) | Decomposed into columns on import; rebuilt into `on`/`using` on export. A join `on` that is non-equi, function-wrapped, or carries an extra filter has no equi-join relationship form, so it is rejected on import (matching the Python converter) rather than emitting a relationship with empty column lists. |
| `relationship` `from_columns`/`to_columns` | join `on` (differing names) / `using` (shared names) | Decomposed into columns on import; rebuilt into `on`/`using` on export. A join `on` that is non-equi, function-wrapped, or carries an extra filter has no equi-join relationship form, so it is rejected on import rather than emitting a relationship with empty column lists. |
| `relationship.from`/`to` direction | join `cardinality` | Export: source on the many (`from`) side -> `many_to_one`; on the one (`to`) side -> `one_to_many`. |
| `dataset.primary_key` / `unique_keys` | join `rely.at_most_one_match` | Both directions: export sets `at_most_one_match` when a key covers the join columns; import recovers a `unique_keys` from it. |
| `dataset.fields[]` | `dimensions[]` | Export: fields flatten into one list and a joined column is qualified by its full join path (`customer.c_name`; `customer.region.r_name` when nested). |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -317,7 +317,7 @@ private static Map<String, Object> convertJoin(
// The `on` is not an equi-join of simple `alias.column` pairs (it has a non-equi operator, a
// SQL-function-wrapped key, or an extra filter predicate), so an Apache Ossie relationship
// cannot represent it (from/to columns are required). Reject rather than emit an invalid
// relationship, matching the Python converter (test_non_equi_on_rejected).
// relationship.
throw new ConversionException("Join '" + child + "' uses a non-equi or unsupported join "
+ "condition ('on: " + rawOn + "') that an Apache Ossie relationship cannot represent. "
+ "Apache Ossie joins are equi-joins of simple `alias.column` pairs (the fact side may "
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
* }</pre>
*
* <p>The directions are named from the Apache Ossie model's point of view, matching
* {@link OssieConverter} and the Python converter: {@code export} converts an Apache Ossie semantic
* {@link OssieConverter}: {@code export} converts an Apache Ossie semantic
* model to a Metric View; {@code import} converts a Metric View to an Apache Ossie model. Output
* goes to the {@code -o} file, or to stdout when omitted. Conversion notices (features dropped on
* export) are written to stderr. A broken input raises
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -676,8 +676,7 @@ public void exportAtTheJoinLimitStillSucceeds() {
@Test
public void nonEquiOnRejected() {
// A non-equi `on` has no Apache Ossie relationship form (from/to columns are required), so it is
// rejected on import rather than emitting a relationship with empty column lists. Matches the
// Python converter (test_non_equi_on_rejected).
// rejected on import rather than emitting a relationship with empty column lists.
String mv =
"version: '1.1'\n"
+ "source: c.s.orders\n"
Expand All @@ -694,7 +693,7 @@ public void nonEquiOnRejected() {
public void complexEquiOnRejected() {
// An equi `on` whose operand is a SQL fragment (OR-joined, or computed) cannot be decomposed
// into from/to columns, so it is rejected rather than producing a relationship with empty
// column lists. Matches the Python converter (test_complex_equi_on_rejected).
// column lists.
for (String cond : new String[] {
"source.a = dim.b OR source.c = dim.d", "source.a = dim.b + 1"}) {
String mv =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ private static OssieDatabricksConverter.ExitException exitFrom(String... args) {
@Test
public void exportConvertsAnOssieModelToAMetricView() throws IOException {
// The directions are named from the Apache Ossie model's point of view, matching the library
// Javadoc and the Python CLI: `export` takes a model OUT to a Metric View.
// Javadoc: `export` takes a model OUT to a Metric View.
String out = stdout("export", write("model.yaml", OSSIE_MODEL).toString());
assertTrue(out.contains("version: \"1.1\""), "expected a Metric View, got:\n" + out);
assertTrue(out.contains("cat.sch.orders"), "expected the source, got:\n" + out);
Expand Down
123 changes: 0 additions & 123 deletions converters/databricks/python/README.md

This file was deleted.

62 changes: 0 additions & 62 deletions converters/databricks/python/pyproject.toml

This file was deleted.

32 changes: 0 additions & 32 deletions converters/databricks/python/src/ossie_databricks/__init__.py

This file was deleted.

Loading
Loading