Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[CT-1227] [Spike] Ibis on Snowflake #272

Closed
lostmygithubaccount opened this issue Sep 21, 2022 · 3 comments
Closed

[CT-1227] [Spike] Ibis on Snowflake #272

lostmygithubaccount opened this issue Sep 21, 2022 · 3 comments
Assignees

Comments

@lostmygithubaccount
Copy link

Spike to proof-of-concept Ibis on Snowflake (Snowpark?)

The purpose of this spike is to evaluate the work needed to add Snowflake as an additional backend to Ibis.

Why?

See dbt-labs/dbt-core#5904.

Snowflake is the most popular adapter for dbt. Ibis doesn't support Snowflake, but I don't see any technical reason blocking that. We (or Snowflake) should evaluate this as we consider it as a vendor-neutral standard for analytics in Python.

What?

Evaluate the work needed to add Snowflake as a backend for Ibis. See acceptance criteria for details.

Additional reading

Acceptance criteria

No working code is required.

We should answer:

  • why isn't Snowflake a supported backend already?
  • Snowflake or Snowpark?
    • if Snowpark compiles down to SQL, and Ibis compiles down to SQL, is there a need for Snowpark?
  • what's the process for adding a new backend in Ibis?
  • what kind of backend would Snowflake be? (direct, string, something else?)
  • rough outline of technical details
  • rough estimate of amount of work needed
  • if feasible, proof-of-concept code
@github-actions github-actions bot changed the title [Spike] Ibis on Snowflake [CT-1226] [Spike] Ibis on Snowflake Sep 21, 2022
@lostmygithubaccount lostmygithubaccount transferred this issue from dbt-labs/dbt-core Sep 21, 2022
@github-actions github-actions bot changed the title [CT-1226] [Spike] Ibis on Snowflake [CT-1227] [CT-1226] [Spike] Ibis on Snowflake Sep 21, 2022
@lostmygithubaccount lostmygithubaccount changed the title [CT-1227] [CT-1226] [Spike] Ibis on Snowflake [CT-1227] [Spike] Ibis on Snowflake Sep 22, 2022
@leahwicz leahwicz changed the title [CT-1227] [Spike] Ibis on Snowflake [Spike] Ibis on Snowflake Sep 22, 2022
@leahwicz leahwicz changed the title [Spike] Ibis on Snowflake [CT-1227] [Spike] Ibis on Snowflake Sep 22, 2022
@lostmygithubaccount
Copy link
Author

@lostmygithubaccount lostmygithubaccount self-assigned this Nov 1, 2022
@lostmygithubaccount
Copy link
Author

We should answer:

  • why isn't Snowflake a supported backend already?

It is in ibis>=4.0.0! looks like something they got to. I've played around with it here: https://github.com/dbt-labs/dbt-demo-data/blob/cody/ibis/ibis.ipynb it works pretty well

  • Snowflake or Snowpark?
    • if Snowpark compiles down to SQL, and Ibis compiles down to SQL, is there a need for Snowpark?

both could technically work: either compile Ibis down to SnowSQL locally and ship it off a la dbt-sql, or simply let it run in Snowpark. the former is limited in capability, the latter is slower and more flexible

  • what's the process for adding a new backend in Ibis?

TBA

  • what kind of backend would Snowflake be? (direct, string, something else?)

looks like string? it outputs SnowSQL code

  • rough outline of technical details

TBA

  • rough estimate of amount of work needed

support via plugin: dbt-labs/dbt-core#6184

  • if feasible, proof-of-concept code

TBW -- writing some based off the PRQL PR: dbt-labs/dbt-core#5982

primary challenges:

  • authenticating
  • getting the ref or source
  • how does the output work? need to call something like ibis.snowflake.compile somewhere

@lostmygithubaccount
Copy link
Author

lostmygithubaccount commented Nov 21, 2022

implemented in dbt-labs/dbt-core#6296

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

No branches or pull requests

1 participant