Skip to content

Add view support to the Rest Catalog #818

Activity

  1. sungwy commented on Jun 15, 2024

    @sungwy
    Collaborator

    Thank you for raising this @ndrluis 💯 I will add this as a 0.8.0 milestone for now

  2. shiv-io commented on Oct 20, 2024

    @shiv-io
    Contributor

    Would love to take a first stab at this @kevinjqliu, could you assign this to me? edit: here's a PR for view_exists: #1242. Thanks!

  3. corleyma commented on Oct 21, 2024

    @corleyma

    I am really curious about how Load View should work, given that currently only SQL representations of views are supported and I don't think we have an in-process SQL engine that can convert SQL into an iceberg scan plan (yet/at all?).

    @shiv-io did you already have some thoughts there?

  4. ndrluis commented on Oct 22, 2024

    @ndrluis
    CollaboratorAuthor

    Following what @danielcweeks said in this email, I believe we could discuss and experiment with SQLGlot to create support for other dialects. However, to support load views, we likely need to rely on a query engine. I'm not sure if there is a query engine in the Python ecosystem that would make sense to support, but I feel that we could use Apache DataFusion through the iceberg-rust implementation or the Python bindings.

  5. sungwy commented on Oct 22, 2024

    @sungwy
    Collaborator

    That's an interesting question @corleyma . The way I see it, PyIceberg is a language library, that tries to remain open to any Python based query engine that wants to make use of its functions to process Iceberg tables. So I think the first step in introducing view support in PyIceberg would be for us to fetch the view representations from the REST Catalog endpoint and serve the view representations to any query engines that want to integrate with it (like Daft).

    I agree with @ndrluis though, that it would be cool to leverage projects like DataFusion to improve the way we load, slice and dice the tables in PyIceberg.

  6. corleyma commented on Oct 22, 2024

    @corleyma

    I agree with @sungwy that the primary goal of pyiceberg should be to make it possible for query engines to interface with Iceberg tables and views.

    Nonetheless, it would be really ideal to have some out of the box way to get a scan of a view (PyArrow Dataset-like is the most ideal, but returning Table/RecordBatchReader like current table scan functionality is a fine endpoint). This is ideal because it provides an easy path for integrating with other things (like polars) that currently support pyiceberg tables, and because it will benefit use of pyiceberg for more operational concerns e.g. being able to easily preview view contents, etc.

    I think DataFusion (either via Python bindings or via iceberg-rust) would be a great way to accomplish this goal. Since (I think?) pyiceberg is much further along in implementing the iceberg sdk than iceberg-rust, it would be interesting if it were possible for pyiceberg to use DataFusion directly but I suspect you need some custom rust code no matter what?

  7. shiv-io commented on Oct 22, 2024

    @shiv-io
    Contributor

    I'm fairly new to the Iceberg ecosystem -- thanks for the insightful discussion, looks like I have some reading to do before I can weigh in.

    load_view aside though, I'd love to work on the other view features if contributions towards this issue are being accepted.

  8. corleyma commented on Oct 22, 2024

    @corleyma

    @shiv-io It should still be possible to do load_view without supporting any scanning functionality yet, and like @sungwy says, that is likely a necessary precursor for other query engines anyway.

    look at how load_table works today: we return a Table model with all the metadata about the table, and this model exposes functionality for data scans, etc. So load_view would start with returning a model with all the metadata about the view (as specified in the spec), and then we can look at trying to add some DataFusion-based scan functionality in subsequent iterations.

  9. kevinjqliu commented on Oct 27, 2024

    @kevinjqliu
    Contributor

    look at how load_table works today: we return a Table model with all the metadata about the table, and this model exposes functionality for data scans, etc. So load_view would start with returning a model with all the metadata about the view (as specified in the spec), and then we can look at trying to add some DataFusion-based scan functionality in subsequent iterations.

    +1, I think it's a good idea to separate accessing the iceberg views from using them. The ability to read an iceberg view is great for general view operations. Even printing out what the view definition is would be a great feature to have.

    Connecting the view with an external engine can be a separate story.

  10. removed this from the PyIceberg 0.9.0 release milestone on Feb 1, 2025
  11. rambleraptor commented on Jun 26, 2025

    @rambleraptor
    Collaborator

    It looks like view_exists has been implemented

  12. github-actions commented on Dec 25, 2025

    @github-actions

    This issue has been automatically marked as stale because it has been open for 180 days with no activity. It will be closed in next 14 days if no further activity occurs. To permanently prevent this issue from being considered stale, add the label 'not-stale', but commenting on the issue is preferred when possible.

  13. Thomas-X commented on Jan 9, 2026

    @Thomas-X

    is this feature still slated for any milestone release? It would remove a few workaround I've had to do to be able to use views in iceberg

  14. d33bs commented on Mar 17, 2026

    @d33bs

    Thanks for all the work on this issue and pyiceberg! I just wanted to double check on this, are the PR's mentioned in the issue description available in a release just yet? I didn't see all of the functionality mentioned in the docs for views. Would love to use this capability!

  15. spr0els commented on May 11, 2026

    @spr0els
    Contributor

    load_view has just been implemented and merged (7fb55cd) @ndrluis

  16. sidharth-05 commented on Aug 7, 2026

    @sidharth-05

    Hi! I’d like to work on the remaining Replace View subtask. My plan is to follow the REST catalog OpenAPI contract and the existing create/load view patterns, implement the narrowly scoped catalog operation, and add focused request/response and error-path tests.

    If this subtask is still available, could you please assign it to me? Thanks!

  17. Zain-ul-Abdin45 commented on Oct 5, 2026

    @Zain-ul-Abdin45

    Hi @rambleraptor, your Rename View PR #2149 looks like it was closed by the stale bot rather than on merit, and Rename View is one of the last open items here. Do you plan to reopen it? If you don't have the bandwidth, I'd be happy to carry it forward: rebase onto current main, resolve conflicts with the recent view changes (#3959, #3960), and address any remaining review. I'd keep you as co-author, of course.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions