Skip to content

Iceberg data source only shows top-level namespaces #9837

Description

@psavalle

Describe the bug

Most of the Iceberg ecosystem supports nested namespaces - e.g., a table's fully qualified name can be prod.nested.table.

When adding a data source with such an Iceberg catalog, the data source browser panel only shows top level namespaces, and nothing in them:

Image

The simplest option would be to show fully-qualified names for all the nested namespaces. The more fancy one would be to support nesting in the tree as well - possibly only fetching sub-namespaces or tables when a given namespace is being expanded, as there could be a lot.

Will you submit a PR?

  • Yes

Environment

Details

{
"marimo": "0.23.8",
"editable": false,
"location": "/Users/notebooks/.venv/lib/python3.12/site-packages/marimo",
"OS": "Darwin",
"OS Version": "25.4.0",
"Processor": "arm",
"Python Version": "3.12.13",
"Locale": "C/en_US",
"Binaries": {
"Browser": "149.0.7827.103",
"Node": "--",
"uv": "0.11.17 (a33a629d6 2026-05-28 aarch64-apple-darwin)"
},
"Dependencies": {
"click": "8.4.1",
"docutils": "0.23",
"itsdangerous": "2.2.0",
"jedi": "0.19.2",
"markdown": "3.10.2",
"narwhals": "2.22.0",
"packaging": "26.2",
"psutil": "7.2.2",
"pygments": "2.20.0",
"pymdown-extensions": "10.21.3",
"pyyaml": "6.0.3",
"starlette": "1.2.1",
"tomlkit": "0.15.0",
"typing-extensions": "4.15.0",
"uvicorn": "0.48.0",
"websockets": "16.0"
},
"Optional Dependencies": {
"loro": "1.10.3",
"pandas": "3.0.3",
"pyarrow": "24.0.0"
},
"Experimental Flags": {}
}

Code to reproduce

@app.cell
def _():
    import pyarrow as pa

    from pyiceberg.catalog import load_catalog

    warehouse_path = "/tmp/"
    test_catalog = load_catalog(
        "default",
        **{
            'type': 'sql',
            "uri": f"sqlite:///{warehouse_path}/pyiceberg_catalog.db",
            "warehouse": f"file://{warehouse_path}",
        },
    )

    # Nested namespace
    test_catalog.create_namespace_if_not_exists("top.nested")

    table = test_catalog.create_table(
        "top.nested.table",
        schema=pa.schema([
            ('some_int', pa.int32()),
            ('some_string', pa.string())
        ])
    )

    return

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    Fields

    No fields configured for Bug.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions