sqlframe 3.4.0__tar.gz → 3.4.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sqlframe-3.4.0 → sqlframe-3.4.1}/PKG-INFO +1 -1
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/_version.py +2 -2
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/base/dataframe.py +33 -9
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe.egg-info/PKG-INFO +1 -1
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/test_int_dataframe.py +56 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/.github/CODEOWNERS +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/.github/workflows/main.workflow.yaml +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/.github/workflows/publish.workflow.yaml +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/.gitignore +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/.pre-commit-config.yaml +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/.readthedocs.yaml +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/LICENSE +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/Makefile +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/README.md +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/blogs/add_chatgpt_support.md +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/blogs/images/add_chatgpt_support/adding_ai_to_meal.jpeg +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/blogs/images/add_chatgpt_support/hype_train.gif +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/blogs/images/add_chatgpt_support/nonsense_sql.png +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/blogs/images/add_chatgpt_support/openai_full_rewrite.png +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/blogs/images/add_chatgpt_support/sunny_shake_head_no.gif +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/blogs/images/but_wait_theres_more.gif +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/blogs/images/cake.gif +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/blogs/images/you_get_pyspark_api.gif +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/blogs/sqlframe_universal_dataframe_api.md +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/docs/bigquery.md +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/docs/configuration.md +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/docs/docs/bigquery.md +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/docs/docs/duckdb.md +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/docs/docs/images/SF.png +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/docs/docs/images/favicon.png +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/docs/docs/images/favicon_old.png +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/docs/docs/images/sqlframe_diagram.png +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/docs/docs/images/sqlframe_logo.png +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/docs/docs/postgres.md +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/docs/duckdb.md +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/docs/images/SF.png +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/docs/images/favicon.png +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/docs/images/favicon_old.png +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/docs/images/sqlframe_diagram.png +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/docs/images/sqlframe_logo.png +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/docs/index.md +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/docs/postgres.md +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/docs/requirements.txt +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/docs/snowflake.md +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/docs/spark.md +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/docs/standalone.md +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/docs/stylesheets/extra.css +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/mkdocs.yml +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/pytest.ini +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/renovate.json +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/setup.cfg +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/setup.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/LICENSE +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/__init__.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/base/__init__.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/base/_typing.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/base/catalog.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/base/column.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/base/decorators.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/base/exceptions.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/base/function_alternatives.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/base/functions.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/base/group.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/base/mixins/__init__.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/base/mixins/catalog_mixins.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/base/mixins/dataframe_mixins.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/base/mixins/readwriter_mixins.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/base/normalize.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/base/operations.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/base/readerwriter.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/base/session.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/base/transforms.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/base/types.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/base/udf.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/base/util.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/base/window.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/bigquery/__init__.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/bigquery/catalog.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/bigquery/column.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/bigquery/dataframe.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/bigquery/functions.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/bigquery/functions.pyi +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/bigquery/group.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/bigquery/readwriter.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/bigquery/session.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/bigquery/types.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/bigquery/udf.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/bigquery/window.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/duckdb/__init__.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/duckdb/catalog.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/duckdb/column.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/duckdb/dataframe.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/duckdb/functions.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/duckdb/functions.pyi +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/duckdb/group.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/duckdb/readwriter.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/duckdb/session.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/duckdb/types.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/duckdb/udf.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/duckdb/window.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/postgres/__init__.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/postgres/catalog.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/postgres/column.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/postgres/dataframe.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/postgres/functions.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/postgres/functions.pyi +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/postgres/group.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/postgres/readwriter.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/postgres/session.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/postgres/types.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/postgres/udf.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/postgres/window.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/redshift/__init__.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/redshift/catalog.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/redshift/column.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/redshift/dataframe.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/redshift/functions.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/redshift/group.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/redshift/readwriter.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/redshift/session.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/redshift/types.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/redshift/udf.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/redshift/window.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/snowflake/__init__.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/snowflake/catalog.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/snowflake/column.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/snowflake/dataframe.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/snowflake/functions.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/snowflake/functions.pyi +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/snowflake/group.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/snowflake/readwriter.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/snowflake/session.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/snowflake/types.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/snowflake/udf.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/snowflake/window.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/spark/__init__.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/spark/catalog.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/spark/column.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/spark/dataframe.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/spark/functions.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/spark/functions.pyi +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/spark/group.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/spark/readwriter.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/spark/session.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/spark/types.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/spark/udf.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/spark/window.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/standalone/__init__.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/standalone/catalog.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/standalone/column.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/standalone/dataframe.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/standalone/functions.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/standalone/group.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/standalone/readwriter.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/standalone/session.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/standalone/types.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/standalone/udf.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/standalone/window.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/testing/__init__.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe/testing/utils.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe.egg-info/SOURCES.txt +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe.egg-info/dependency_links.txt +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe.egg-info/requires.txt +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/sqlframe.egg-info/top_level.txt +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/__init__.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/common_fixtures.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/conftest.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/employee.csv +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/employee.json +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/employee.parquet +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/employee_delta/.part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/employee_delta/.part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/employee_delta/.part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/employee_delta/.part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/employee_delta/.part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/employee_delta/.part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/employee_delta/_delta_log/.00000000000000000000.json.crc +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/employee_delta/_delta_log/00000000000000000000.json +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/employee_delta/part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/employee_delta/part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/employee_delta/part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/employee_delta/part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/employee_delta/part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/employee_delta/part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/employee_extra_line.csv +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds1.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds10.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds11.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds12.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds13.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds14.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds15.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds16.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds17.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds18.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds19.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds2.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds20.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds21.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds22.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds23.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds24.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds25.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds26.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds27.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds28.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds29.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds3.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds30.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds31.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds32.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds33.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds34.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds35.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds36.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds37.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds38.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds39.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds4.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds40.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds41.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds42.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds43.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds44.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds45.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds46.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds47.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds48.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds49.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds5.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds50.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds51.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds52.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds53.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds54.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds55.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds56.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds57.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds58.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds59.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds6.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds60.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds61.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds62.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds63.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds64.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds65.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds66.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds67.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds68.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds69.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds7.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds70.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds71.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds72.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds73.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds74.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds75.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds76.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds77.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds78.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds79.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds8.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds80.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds81.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds82.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds83.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds84.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds85.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds86.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds87.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds88.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds89.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds9.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds90.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds91.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds92.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds93.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds94.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds95.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds96.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds97.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds98.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/fixtures/tpcds/tpcds99.sql +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/__init__.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/engines/__init__.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/engines/bigquery/__init__.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/engines/bigquery/test_bigquery_catalog.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/engines/bigquery/test_bigquery_dataframe.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/engines/bigquery/test_bigquery_session.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/engines/duck/__init__.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/engines/duck/test_duckdb_activate.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/engines/duck/test_duckdb_catalog.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/engines/duck/test_duckdb_dataframe.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/engines/duck/test_duckdb_reader.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/engines/duck/test_duckdb_session.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/engines/duck/test_duckdb_udf.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/engines/duck/test_tpcds.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/engines/postgres/__init__.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/engines/postgres/test_postgres_activate.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/engines/postgres/test_postgres_catalog.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/engines/postgres/test_postgres_dataframe.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/engines/postgres/test_postgres_session.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/engines/redshift/__init__.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/engines/redshift/test_redshift_catalog.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/engines/redshift/test_redshift_session.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/engines/snowflake/__init__.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/engines/snowflake/test_snowflake_catalog.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/engines/snowflake/test_snowflake_dataframe.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/engines/snowflake/test_snowflake_session.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/engines/spark/__init__.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/engines/spark/test_spark_catalog.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/engines/spark/test_spark_dataframe.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/engines/test_engine_column.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/engines/test_engine_dataframe.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/engines/test_engine_reader.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/engines/test_engine_session.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/engines/test_engine_writer.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/engines/test_int_functions.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/engines/test_int_testing.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/fixtures.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/test_int_dataframe_stats.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/test_int_grouped_data.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/integration/test_int_session.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/types.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/unit/__init__.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/unit/bigquery/__init__.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/unit/bigquery/test_activate.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/unit/conftest.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/unit/duck/__init__.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/unit/duck/test_activate.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/unit/postgres/__init__.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/unit/postgres/test_activate.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/unit/redshift/__init__.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/unit/redshift/test_activate.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/unit/snowflake/__init__.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/unit/snowflake/test_activate.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/unit/spark/__init__.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/unit/spark/test_activate.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/unit/standalone/__init__.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/unit/standalone/fixtures.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/unit/standalone/test_activate.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/unit/standalone/test_column.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/unit/standalone/test_dataframe.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/unit/standalone/test_dataframe_writer.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/unit/standalone/test_functions.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/unit/standalone/test_session.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/unit/standalone/test_session_case_sensitivity.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/unit/standalone/test_types.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/unit/standalone/test_window.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/unit/test_activate.py +0 -0
- {sqlframe-3.4.0 → sqlframe-3.4.1}/tests/unit/test_util.py +0 -0
|
@@ -15,7 +15,7 @@ from dataclasses import dataclass
|
|
|
15
15
|
|
|
16
16
|
import sqlglot
|
|
17
17
|
from prettytable import PrettyTable
|
|
18
|
-
from sqlglot import Dialect
|
|
18
|
+
from sqlglot import Dialect, maybe_parse
|
|
19
19
|
from sqlglot import expressions as exp
|
|
20
20
|
from sqlglot import lineage as sqlglot_lineage
|
|
21
21
|
from sqlglot.helper import ensure_list, flatten, object_to_dict, seq_get
|
|
@@ -460,16 +460,40 @@ class _BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
|
460
460
|
df.expression.ctes[-1].set("cache_storage_level", storage_level)
|
|
461
461
|
return df
|
|
462
462
|
|
|
463
|
-
|
|
464
|
-
def _add_ctes_to_expression(cls, expression: exp.Select, ctes: t.List[exp.CTE]) -> exp.Select:
|
|
463
|
+
def _add_ctes_to_expression(self, expression: exp.Select, ctes: t.List[exp.CTE]) -> exp.Select:
|
|
465
464
|
expression = expression.copy()
|
|
466
465
|
with_expression = expression.args.get("with")
|
|
467
466
|
if with_expression:
|
|
468
467
|
existing_ctes = with_expression.expressions
|
|
469
|
-
|
|
468
|
+
existing_cte_counts = {x.alias_or_name: 0 for x in existing_ctes}
|
|
469
|
+
replaced_cte_names = {} # type: ignore
|
|
470
470
|
for cte in ctes:
|
|
471
|
-
if
|
|
472
|
-
|
|
471
|
+
if replaced_cte_names:
|
|
472
|
+
cte = cte.transform(replace_id_value, replaced_cte_names) # type: ignore
|
|
473
|
+
if cte.alias_or_name in existing_cte_counts:
|
|
474
|
+
existing_cte_counts[cte.alias_or_name] += 10
|
|
475
|
+
cte.set(
|
|
476
|
+
"this",
|
|
477
|
+
cte.this.where(
|
|
478
|
+
exp.EQ(
|
|
479
|
+
this=exp.Literal.number(existing_cte_counts[cte.alias_or_name]),
|
|
480
|
+
expression=exp.Literal.number(
|
|
481
|
+
existing_cte_counts[cte.alias_or_name]
|
|
482
|
+
),
|
|
483
|
+
)
|
|
484
|
+
),
|
|
485
|
+
)
|
|
486
|
+
new_cte_alias = self._create_hash_from_expression(cte.this)
|
|
487
|
+
replaced_cte_names[cte.args["alias"].this] = maybe_parse(
|
|
488
|
+
new_cte_alias, dialect=self.session.input_dialect, into=exp.Identifier
|
|
489
|
+
)
|
|
490
|
+
cte.set(
|
|
491
|
+
"alias",
|
|
492
|
+
maybe_parse(
|
|
493
|
+
new_cte_alias, dialect=self.session.input_dialect, into=exp.TableAlias
|
|
494
|
+
),
|
|
495
|
+
)
|
|
496
|
+
existing_ctes.append(cte)
|
|
473
497
|
else:
|
|
474
498
|
existing_ctes = ctes
|
|
475
499
|
expression.set("with", exp.With(expressions=existing_ctes))
|
|
@@ -843,11 +867,11 @@ class _BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
|
843
867
|
logger.warning("Got no value for on. This appears to change the join to a cross join.")
|
|
844
868
|
how = "cross"
|
|
845
869
|
other_df = other_df._convert_leaf_to_cte()
|
|
870
|
+
join_expression = self._add_ctes_to_expression(self.expression, other_df.expression.ctes)
|
|
846
871
|
# We will determine actual "join on" expression later so we don't provide it at first
|
|
847
|
-
join_expression =
|
|
848
|
-
|
|
872
|
+
join_expression = join_expression.join(
|
|
873
|
+
join_expression.ctes[-1].alias, join_type=how.replace("_", " ")
|
|
849
874
|
)
|
|
850
|
-
join_expression = self._add_ctes_to_expression(join_expression, other_df.expression.ctes)
|
|
851
875
|
self_columns = self._get_outer_select_columns(join_expression)
|
|
852
876
|
other_columns = self._get_outer_select_columns(other_df.expression)
|
|
853
877
|
join_columns = self._ensure_and_normalize_cols(on)
|
|
@@ -2180,3 +2180,59 @@ def test_chained_join_common_key(
|
|
|
2180
2180
|
dfs = dfs.join(dfs_height, how="left", on="name").join(dfs_location, how="left", on="name")
|
|
2181
2181
|
|
|
2182
2182
|
compare_frames(df, dfs, compare_schema=False)
|
|
2183
|
+
|
|
2184
|
+
|
|
2185
|
+
# https://github.com/eakmanrq/sqlframe/issues/185
|
|
2186
|
+
def test_chaining_joins_with_selects(
|
|
2187
|
+
pyspark_employee: PySparkDataFrame,
|
|
2188
|
+
pyspark_store: PySparkDataFrame,
|
|
2189
|
+
pyspark_district: PySparkDataFrame,
|
|
2190
|
+
get_df: t.Callable[[str], _BaseDataFrame],
|
|
2191
|
+
compare_frames: t.Callable,
|
|
2192
|
+
is_spark: t.Callable,
|
|
2193
|
+
):
|
|
2194
|
+
if is_spark():
|
|
2195
|
+
pytest.skip(
|
|
2196
|
+
"This test is not supported in Spark. This is related to how duplicate columns are handled in Spark"
|
|
2197
|
+
)
|
|
2198
|
+
df = (
|
|
2199
|
+
pyspark_employee.alias("employee")
|
|
2200
|
+
.join(
|
|
2201
|
+
pyspark_store.filter(F.col("store_name") != "test").alias("store"),
|
|
2202
|
+
on=F.col("employee.employee_id") == F.col("store.store_id"),
|
|
2203
|
+
)
|
|
2204
|
+
.join(
|
|
2205
|
+
pyspark_district.alias("district"),
|
|
2206
|
+
on=F.col("store.store_id") == F.col("district.district_id"),
|
|
2207
|
+
)
|
|
2208
|
+
.join(
|
|
2209
|
+
pyspark_district.alias("district2"),
|
|
2210
|
+
on=(F.col("store.store_id") + 1) == F.col("district2.district_id"),
|
|
2211
|
+
how="left",
|
|
2212
|
+
)
|
|
2213
|
+
.select("*")
|
|
2214
|
+
)
|
|
2215
|
+
|
|
2216
|
+
employee = get_df("employee")
|
|
2217
|
+
store = get_df("store")
|
|
2218
|
+
district = get_df("district")
|
|
2219
|
+
|
|
2220
|
+
dfs = (
|
|
2221
|
+
employee.alias("employee")
|
|
2222
|
+
.join(
|
|
2223
|
+
store.filter(SF.col("store_name") != "test").alias("store"),
|
|
2224
|
+
on=SF.col("employee.employee_id") == SF.col("store.store_id"),
|
|
2225
|
+
)
|
|
2226
|
+
.join(
|
|
2227
|
+
district.alias("district"),
|
|
2228
|
+
on=SF.col("store.store_id") == SF.col("district.district_id"),
|
|
2229
|
+
)
|
|
2230
|
+
.join(
|
|
2231
|
+
district.alias("district2"),
|
|
2232
|
+
on=(SF.col("store.store_id") + 1) == SF.col("district2.district_id"),
|
|
2233
|
+
how="left",
|
|
2234
|
+
)
|
|
2235
|
+
.select("*")
|
|
2236
|
+
)
|
|
2237
|
+
|
|
2238
|
+
compare_frames(df, dfs, compare_schema=False)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sqlframe-3.4.0 → sqlframe-3.4.1}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sqlframe-3.4.0 → sqlframe-3.4.1}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png
RENAMED
|
File without changes
|
{sqlframe-3.4.0 → sqlframe-3.4.1}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|