sqlframe 3.19.0__tar.gz → 3.21.0__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {sqlframe-3.19.0 → sqlframe-3.21.0}/PKG-INFO +1 -1
- {sqlframe-3.19.0 → sqlframe-3.21.0}/docs/bigquery.md +1 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/docs/duckdb.md +2 -1
- {sqlframe-3.19.0 → sqlframe-3.21.0}/docs/postgres.md +1 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/docs/snowflake.md +1 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/docs/spark.md +1 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/docs/standalone.md +1 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/_version.py +2 -2
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/base/dataframe.py +108 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/base/functions.py +1 -7
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/base/util.py +1 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe.egg-info/PKG-INFO +1 -1
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/test_int_functions.py +4 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/test_int_dataframe.py +48 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/unit/test_util.py +1 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/.github/CODEOWNERS +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/.github/workflows/main.workflow.yaml +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/.github/workflows/publish.workflow.yaml +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/.gitignore +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/.pre-commit-config.yaml +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/.readthedocs.yaml +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/LICENSE +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/Makefile +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/README.md +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/blogs/add_chatgpt_support.md +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/blogs/images/add_chatgpt_support/adding_ai_to_meal.jpeg +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/blogs/images/add_chatgpt_support/hype_train.gif +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/blogs/images/add_chatgpt_support/nonsense_sql.png +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/blogs/images/add_chatgpt_support/openai_full_rewrite.png +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/blogs/images/add_chatgpt_support/sunny_shake_head_no.gif +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/blogs/images/but_wait_theres_more.gif +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/blogs/images/cake.gif +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/blogs/images/you_get_pyspark_api.gif +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/blogs/sqlframe_universal_dataframe_api.md +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/docs/configuration.md +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/docs/databricks.md +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/docs/docs/bigquery.md +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/docs/docs/duckdb.md +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/docs/docs/images/SF.png +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/docs/docs/images/favicon.png +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/docs/docs/images/favicon_old.png +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/docs/docs/images/sqlframe_diagram.png +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/docs/docs/images/sqlframe_logo.png +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/docs/docs/postgres.md +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/docs/images/SF.png +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/docs/images/favicon.png +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/docs/images/favicon_old.png +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/docs/images/sqlframe_diagram.png +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/docs/images/sqlframe_logo.png +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/docs/index.md +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/docs/redshift.md +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/docs/requirements.txt +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/docs/stylesheets/extra.css +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/mkdocs.yml +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/pytest.ini +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/renovate.json +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/setup.cfg +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/setup.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/LICENSE +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/__init__.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/base/__init__.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/base/_typing.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/base/catalog.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/base/column.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/base/decorators.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/base/exceptions.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/base/function_alternatives.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/base/group.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/base/mixins/__init__.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/base/mixins/catalog_mixins.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/base/mixins/dataframe_mixins.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/base/mixins/readwriter_mixins.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/base/mixins/table_mixins.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/base/normalize.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/base/operations.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/base/readerwriter.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/base/session.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/base/table.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/base/transforms.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/base/types.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/base/udf.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/base/window.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/bigquery/__init__.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/bigquery/catalog.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/bigquery/column.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/bigquery/dataframe.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/bigquery/functions.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/bigquery/functions.pyi +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/bigquery/group.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/bigquery/readwriter.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/bigquery/session.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/bigquery/table.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/bigquery/types.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/bigquery/udf.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/bigquery/window.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/databricks/__init__.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/databricks/catalog.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/databricks/column.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/databricks/dataframe.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/databricks/functions.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/databricks/functions.pyi +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/databricks/group.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/databricks/readwriter.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/databricks/session.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/databricks/table.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/databricks/types.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/databricks/udf.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/databricks/window.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/duckdb/__init__.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/duckdb/catalog.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/duckdb/column.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/duckdb/dataframe.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/duckdb/functions.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/duckdb/functions.pyi +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/duckdb/group.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/duckdb/readwriter.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/duckdb/session.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/duckdb/table.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/duckdb/types.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/duckdb/udf.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/duckdb/window.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/postgres/__init__.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/postgres/catalog.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/postgres/column.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/postgres/dataframe.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/postgres/functions.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/postgres/functions.pyi +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/postgres/group.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/postgres/readwriter.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/postgres/session.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/postgres/table.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/postgres/types.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/postgres/udf.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/postgres/window.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/redshift/__init__.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/redshift/catalog.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/redshift/column.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/redshift/dataframe.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/redshift/functions.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/redshift/group.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/redshift/readwriter.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/redshift/session.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/redshift/table.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/redshift/types.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/redshift/udf.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/redshift/window.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/snowflake/__init__.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/snowflake/catalog.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/snowflake/column.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/snowflake/dataframe.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/snowflake/functions.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/snowflake/functions.pyi +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/snowflake/group.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/snowflake/readwriter.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/snowflake/session.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/snowflake/table.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/snowflake/types.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/snowflake/udf.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/snowflake/window.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/spark/__init__.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/spark/catalog.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/spark/column.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/spark/dataframe.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/spark/functions.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/spark/functions.pyi +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/spark/group.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/spark/readwriter.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/spark/session.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/spark/table.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/spark/types.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/spark/udf.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/spark/window.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/standalone/__init__.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/standalone/catalog.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/standalone/column.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/standalone/dataframe.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/standalone/functions.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/standalone/group.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/standalone/readwriter.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/standalone/session.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/standalone/table.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/standalone/types.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/standalone/udf.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/standalone/window.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/testing/__init__.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe/testing/utils.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe.egg-info/SOURCES.txt +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe.egg-info/dependency_links.txt +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe.egg-info/requires.txt +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/sqlframe.egg-info/top_level.txt +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/__init__.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/common_fixtures.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/conftest.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/employee.csv +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/employee.json +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/employee.parquet +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/employee_delta/.part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/employee_delta/.part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/employee_delta/.part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/employee_delta/.part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/employee_delta/.part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/employee_delta/.part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/employee_delta/_delta_log/.00000000000000000000.json.crc +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/employee_delta/_delta_log/00000000000000000000.json +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/employee_delta/part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/employee_delta/part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/employee_delta/part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/employee_delta/part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/employee_delta/part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/employee_delta/part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/employee_extra_line.csv +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/issue_219.csv +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds1.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds10.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds11.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds12.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds13.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds14.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds15.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds16.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds17.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds18.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds19.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds2.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds20.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds21.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds22.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds23.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds24.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds25.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds26.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds27.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds28.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds29.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds3.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds30.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds31.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds32.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds33.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds34.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds35.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds36.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds37.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds38.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds39.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds4.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds40.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds41.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds42.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds43.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds44.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds45.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds46.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds47.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds48.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds49.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds5.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds50.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds51.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds52.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds53.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds54.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds55.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds56.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds57.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds58.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds59.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds6.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds60.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds61.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds62.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds63.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds64.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds65.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds66.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds67.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds68.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds69.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds7.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds70.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds71.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds72.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds73.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds74.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds75.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds76.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds77.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds78.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds79.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds8.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds80.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds81.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds82.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds83.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds84.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds85.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds86.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds87.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds88.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds89.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds9.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds90.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds91.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds92.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds93.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds94.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds95.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds96.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds97.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds98.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/fixtures/tpcds/tpcds99.sql +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/__init__.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/__init__.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/bigquery/__init__.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/bigquery/test_bigquery_catalog.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/bigquery/test_bigquery_dataframe.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/bigquery/test_bigquery_session.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/databricks/__init__.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/databricks/test_databricks_catalog.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/databricks/test_databricks_dataframe.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/databricks/test_databricks_session.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/duck/__init__.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/duck/test_duckdb_activate.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/duck/test_duckdb_catalog.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/duck/test_duckdb_dataframe.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/duck/test_duckdb_reader.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/duck/test_duckdb_session.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/duck/test_duckdb_udf.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/duck/test_tpcds.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/postgres/__init__.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/postgres/test_postgres_activate.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/postgres/test_postgres_catalog.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/postgres/test_postgres_dataframe.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/postgres/test_postgres_session.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/redshift/__init__.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/redshift/test_redshift_catalog.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/redshift/test_redshift_session.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/snowflake/__init__.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/snowflake/test_snowflake_catalog.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/snowflake/test_snowflake_dataframe.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/snowflake/test_snowflake_session.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/spark/__init__.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/spark/test_spark_catalog.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/spark/test_spark_dataframe.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/test_engine_column.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/test_engine_dataframe.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/test_engine_reader.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/test_engine_session.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/test_engine_table.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/test_engine_writer.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/engines/test_int_testing.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/fixtures.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/test_int_dataframe_stats.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/test_int_grouped_data.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/integration/test_int_session.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/types.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/unit/__init__.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/unit/bigquery/__init__.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/unit/bigquery/test_activate.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/unit/conftest.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/unit/databricks/__init__.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/unit/databricks/test_activate.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/unit/duck/__init__.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/unit/duck/test_activate.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/unit/postgres/__init__.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/unit/postgres/test_activate.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/unit/redshift/__init__.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/unit/redshift/test_activate.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/unit/snowflake/__init__.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/unit/snowflake/test_activate.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/unit/spark/__init__.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/unit/spark/test_activate.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/unit/standalone/__init__.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/unit/standalone/fixtures.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/unit/standalone/test_activate.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/unit/standalone/test_column.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/unit/standalone/test_dataframe.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/unit/standalone/test_dataframe_writer.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/unit/standalone/test_functions.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/unit/standalone/test_session.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/unit/standalone/test_session_case_sensitivity.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/unit/standalone/test_types.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/unit/standalone/test_window.py +0 -0
- {sqlframe-3.19.0 → sqlframe-3.21.0}/tests/unit/test_activate.py +0 -0
@@ -289,6 +289,7 @@ See something that you would like to see supported? [Open an issue](https://gith
|
|
289
289
|
* [union](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.union.html)
|
290
290
|
* [unionAll](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.unionAll.html)
|
291
291
|
* [unionByName](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.unionByName.html)
|
292
|
+
* [unpivot](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.unpivot.html)
|
292
293
|
* [where](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.where.html)
|
293
294
|
* [withColumn](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.withColumn.html)
|
294
295
|
* [withColumnRenamed](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.withColumnRenamed.html)
|
@@ -255,6 +255,7 @@ See something that you would like to see supported? [Open an issue](https://gith
|
|
255
255
|
* [union](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.union.html)
|
256
256
|
* [unionAll](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.unionAll.html)
|
257
257
|
* [unionByName](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.unionByName.html)
|
258
|
+
* [unpivot](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.unpivot.html)
|
258
259
|
* [where](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.where.html)
|
259
260
|
* [withColumn](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.withColumn.html)
|
260
261
|
* [withColumnRenamed](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.withColumnRenamed.html)
|
@@ -266,7 +267,7 @@ See something that you would like to see supported? [Open an issue](https://gith
|
|
266
267
|
* [acos](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.acos.html)
|
267
268
|
* [add_months](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.add_months.html)
|
268
269
|
* [any_value](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.any_value.html)
|
269
|
-
|
270
|
+
* Always ignores nulls
|
270
271
|
* [approxCountDistinct](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.approxCountDistinct.html)
|
271
272
|
* [approx_count_distinct](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.approx_count_distinct.html)
|
272
273
|
* [array](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.array.html)
|
@@ -269,6 +269,7 @@ See something that you would like to see supported? [Open an issue](https://gith
|
|
269
269
|
* [union](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.union.html)
|
270
270
|
* [unionAll](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.unionAll.html)
|
271
271
|
* [unionByName](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.unionByName.html)
|
272
|
+
* [unpivot](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.unpivot.html)
|
272
273
|
* [where](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.where.html)
|
273
274
|
* [withColumn](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.withColumn.html)
|
274
275
|
* [withColumnRenamed](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.withColumnRenamed.html)
|
@@ -285,6 +285,7 @@ See something that you would like to see supported? [Open an issue](https://gith
|
|
285
285
|
* [union](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.union.html)
|
286
286
|
* [unionAll](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.unionAll.html)
|
287
287
|
* [unionByName](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.unionByName.html)
|
288
|
+
* [unpivot](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.unpivot.html)
|
288
289
|
* [where](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.where.html)
|
289
290
|
* [withColumn](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.withColumn.html)
|
290
291
|
* [withColumnRenamed](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.withColumnRenamed.html)
|
@@ -174,6 +174,7 @@ df.show(5)
|
|
174
174
|
* [union](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.union.html)
|
175
175
|
* [unionAll](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.unionAll.html)
|
176
176
|
* [unionByName](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.unionByName.html)
|
177
|
+
* [unpivot](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.unpivot.html)
|
177
178
|
* [where](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.where.html)
|
178
179
|
* [withColumn](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.withColumn.html)
|
179
180
|
* [withColumnRenamed](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.withColumnRenamed.html)
|
@@ -181,6 +181,7 @@ See something that you would like to see supported? [Open an issue](https://gith
|
|
181
181
|
* [union](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.union.html)
|
182
182
|
* [unionAll](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.unionAll.html)
|
183
183
|
* [unionByName](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.unionByName.html)
|
184
|
+
* [unpivot](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.unpivot.html)
|
184
185
|
* [where](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.where.html)
|
185
186
|
* [withColumn](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.withColumn.html)
|
186
187
|
* [withColumnRenamed](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.withColumnRenamed.html)
|
@@ -1718,6 +1718,114 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
1718
1718
|
grouping_columns.extend([list(x) for x in itertools.combinations(columns, i)])
|
1719
1719
|
return self._group_data(self, grouping_columns, self.last_op)
|
1720
1720
|
|
1721
|
+
@operation(Operation.SELECT)
|
1722
|
+
def unpivot(
|
1723
|
+
self,
|
1724
|
+
ids: t.Union[ColumnOrName, t.List[ColumnOrName], t.Tuple[ColumnOrName, ...]],
|
1725
|
+
values: t.Optional[t.Union[ColumnOrName, t.List[ColumnOrName], t.Tuple[ColumnOrName, ...]]],
|
1726
|
+
variableColumnName: str,
|
1727
|
+
valueColumnName: str,
|
1728
|
+
) -> Self:
|
1729
|
+
"""
|
1730
|
+
Unpivot a DataFrame from wide format to long format, optionally leaving
|
1731
|
+
identifier columns set. This is the reverse to `groupBy(...).pivot(...).agg(...)`,
|
1732
|
+
except for the aggregation, which cannot be reversed.
|
1733
|
+
|
1734
|
+
This function is useful to massage a DataFrame into a format where some
|
1735
|
+
columns are identifier columns ("ids"), while all other columns ("values")
|
1736
|
+
are "unpivoted" to the rows, leaving just two non-id columns, named as given
|
1737
|
+
by `variableColumnName` and `valueColumnName`.
|
1738
|
+
|
1739
|
+
When no "id" columns are given, the unpivoted DataFrame consists of only the
|
1740
|
+
"variable" and "value" columns.
|
1741
|
+
|
1742
|
+
The `values` columns must not be empty so at least one value must be given to be unpivoted.
|
1743
|
+
When `values` is `None`, all non-id columns will be unpivoted.
|
1744
|
+
|
1745
|
+
All "value" columns must share a least common data type. Unless they are the same data type,
|
1746
|
+
all "value" columns are cast to the nearest common data type. For instance, types
|
1747
|
+
`IntegerType` and `LongType` are cast to `LongType`, while `IntegerType` and `StringType`
|
1748
|
+
do not have a common data type and `unpivot` fails.
|
1749
|
+
|
1750
|
+
.. versionadded:: 3.4.0
|
1751
|
+
|
1752
|
+
Parameters
|
1753
|
+
----------
|
1754
|
+
ids : str, Column, tuple, list
|
1755
|
+
Column(s) to use as identifiers. Can be a single column or column name,
|
1756
|
+
or a list or tuple for multiple columns.
|
1757
|
+
values : str, Column, tuple, list, optional
|
1758
|
+
Column(s) to unpivot. Can be a single column or column name, or a list or tuple
|
1759
|
+
for multiple columns. If specified, must not be empty. If not specified, uses all
|
1760
|
+
columns that are not set as `ids`.
|
1761
|
+
variableColumnName : str
|
1762
|
+
Name of the variable column.
|
1763
|
+
valueColumnName : str
|
1764
|
+
Name of the value column.
|
1765
|
+
|
1766
|
+
Returns
|
1767
|
+
-------
|
1768
|
+
:class:`DataFrame`
|
1769
|
+
Unpivoted DataFrame.
|
1770
|
+
|
1771
|
+
Notes
|
1772
|
+
-----
|
1773
|
+
Supports Spark Connect.
|
1774
|
+
|
1775
|
+
Examples
|
1776
|
+
--------
|
1777
|
+
>>> df = spark.createDataFrame(
|
1778
|
+
... [(1, 11, 1.1), (2, 12, 1.2)],
|
1779
|
+
... ["id", "int", "double"],
|
1780
|
+
... )
|
1781
|
+
>>> df.show()
|
1782
|
+
+---+---+------+
|
1783
|
+
| id|int|double|
|
1784
|
+
+---+---+------+
|
1785
|
+
| 1| 11| 1.1|
|
1786
|
+
| 2| 12| 1.2|
|
1787
|
+
+---+---+------+
|
1788
|
+
|
1789
|
+
>>> df.unpivot("id", ["int", "double"], "var", "val").show()
|
1790
|
+
+---+------+----+
|
1791
|
+
| id| var| val|
|
1792
|
+
+---+------+----+
|
1793
|
+
| 1| int|11.0|
|
1794
|
+
| 1|double| 1.1|
|
1795
|
+
| 2| int|12.0|
|
1796
|
+
| 2|double| 1.2|
|
1797
|
+
+---+------+----+
|
1798
|
+
|
1799
|
+
See Also
|
1800
|
+
--------
|
1801
|
+
DataFrame.melt
|
1802
|
+
"""
|
1803
|
+
from sqlframe.base import functions as F
|
1804
|
+
|
1805
|
+
id_columns = self._ensure_and_normalize_cols(ids)
|
1806
|
+
if not values:
|
1807
|
+
outer_selects = self._get_outer_select_columns(self.expression)
|
1808
|
+
values = [
|
1809
|
+
column
|
1810
|
+
for column in outer_selects
|
1811
|
+
if column.alias_or_name not in {x.alias_or_name for x in id_columns}
|
1812
|
+
]
|
1813
|
+
value_columns = self._ensure_and_normalize_cols(values)
|
1814
|
+
|
1815
|
+
df = self._convert_leaf_to_cte()
|
1816
|
+
selects = []
|
1817
|
+
for value in value_columns:
|
1818
|
+
selects.append(
|
1819
|
+
exp.select(
|
1820
|
+
*[x.column_expression for x in id_columns],
|
1821
|
+
F.lit(value.alias_or_name).alias(variableColumnName).expression,
|
1822
|
+
value.alias(valueColumnName).expression,
|
1823
|
+
).from_(df.expression.ctes[-1].alias_or_name)
|
1824
|
+
)
|
1825
|
+
unioned_expression = functools.reduce(lambda x, y: x.union(y, distinct=False), selects) # type: ignore
|
1826
|
+
final_expression = self._add_ctes_to_expression(unioned_expression, df.expression.ctes)
|
1827
|
+
return self.copy(expression=final_expression)._convert_leaf_to_cte()
|
1828
|
+
|
1721
1829
|
def collect(self) -> t.List[Row]:
|
1722
1830
|
return self._collect()
|
1723
1831
|
|
@@ -3133,20 +3133,14 @@ def datepart(field: ColumnOrName, source: ColumnOrName) -> Column:
|
|
3133
3133
|
|
3134
3134
|
@meta(unsupported_engines=["bigquery", "postgres", "snowflake"])
|
3135
3135
|
def day(col: ColumnOrName) -> Column:
|
3136
|
-
from sqlframe.base.function_alternatives import day_with_try_to_timestamp
|
3137
|
-
|
3138
3136
|
session = _get_session()
|
3139
3137
|
|
3140
3138
|
if session._is_duckdb:
|
3141
3139
|
try_to_timestamp = get_func_from_session("try_to_timestamp")
|
3142
3140
|
to_date = get_func_from_session("to_date")
|
3143
|
-
when = get_func_from_session("when")
|
3144
3141
|
_is_string = get_func_from_session("_is_string")
|
3145
3142
|
coalesce = get_func_from_session("coalesce")
|
3146
|
-
col =
|
3147
|
-
_is_string(col),
|
3148
|
-
coalesce(try_to_timestamp(col), to_date(col)),
|
3149
|
-
).otherwise(col)
|
3143
|
+
col = coalesce(try_to_timestamp(Column.ensure_col(col).cast("VARCHAR")), to_date(col))
|
3150
3144
|
|
3151
3145
|
return Column.invoke_expression_over_column(col, expression.Day)
|
3152
3146
|
|
@@ -316,6 +316,7 @@ def sqlglot_to_spark(sqlglot_dtype: exp.DataType) -> types.DataType:
|
|
316
316
|
exp.DataType.Type.INT: types.IntegerType,
|
317
317
|
exp.DataType.Type.BIGINT: types.LongType,
|
318
318
|
exp.DataType.Type.SMALLINT: types.ShortType,
|
319
|
+
exp.DataType.Type.TINYINT: types.ByteType,
|
319
320
|
exp.DataType.Type.FLOAT: types.FloatType,
|
320
321
|
exp.DataType.Type.DOUBLE: types.DoubleType,
|
321
322
|
exp.DataType.Type.DECIMAL: types.DecimalType,
|
@@ -3640,6 +3640,10 @@ def test_day(get_session_and_func, get_func):
|
|
3640
3640
|
session, day = get_session_and_func("day")
|
3641
3641
|
df = session.createDataFrame([("2015-04-08",)], ["dt"])
|
3642
3642
|
assert df.select(day("dt").alias("day")).first()[0] == 8
|
3643
|
+
df = session.createDataFrame([(datetime.datetime(2025, 4, 8),)], ["dt"])
|
3644
|
+
assert df.select(day("dt").alias("day")).first()[0] == 8
|
3645
|
+
df = session.createDataFrame([("2015-04-08 01:00:00",)], ["dt"])
|
3646
|
+
assert df.select(day("dt").alias("day")).first()[0] == 8
|
3643
3647
|
|
3644
3648
|
|
3645
3649
|
def test_elt(get_session_and_func, get_func):
|
@@ -2164,6 +2164,54 @@ def test_transform(
|
|
2164
2164
|
compare_frames(df, dfs)
|
2165
2165
|
|
2166
2166
|
|
2167
|
+
def test_unpivot(
|
2168
|
+
pyspark_employee: PySparkDataFrame,
|
2169
|
+
get_df: t.Callable[[str], BaseDataFrame],
|
2170
|
+
compare_frames: t.Callable,
|
2171
|
+
):
|
2172
|
+
employee = get_df("employee")
|
2173
|
+
df = pyspark_employee.unpivot(
|
2174
|
+
pyspark_employee.columns, # type: ignore
|
2175
|
+
["fname", "lname"],
|
2176
|
+
"attribute",
|
2177
|
+
"value",
|
2178
|
+
)
|
2179
|
+
dfs = employee.unpivot(employee.columns, ["fname", "lname"], "attribute", "value")
|
2180
|
+
compare_frames(df, dfs, sort=True)
|
2181
|
+
|
2182
|
+
|
2183
|
+
def test_unpivot_no_values(
|
2184
|
+
pyspark_employee: PySparkDataFrame,
|
2185
|
+
get_df: t.Callable[[str], BaseDataFrame],
|
2186
|
+
compare_frames: t.Callable,
|
2187
|
+
):
|
2188
|
+
employee = get_df("employee")
|
2189
|
+
df = pyspark_employee.unpivot(["employee_id", "fname", "lname"], None, "attribute", "value")
|
2190
|
+
dfs = employee.unpivot(["employee_id", "fname", "lname"], None, "attribute", "value")
|
2191
|
+
compare_frames(df, dfs, sort=True)
|
2192
|
+
|
2193
|
+
|
2194
|
+
def test_unpivot_doc_example(
|
2195
|
+
pyspark_employee: PySparkDataFrame,
|
2196
|
+
get_df: t.Callable[[str], BaseDataFrame],
|
2197
|
+
compare_frames: t.Callable,
|
2198
|
+
):
|
2199
|
+
df = pyspark_employee._session.createDataFrame(
|
2200
|
+
[(1, 11, 1.1), (2, 12, 1.2)],
|
2201
|
+
["id", "int", "double"],
|
2202
|
+
).unpivot("id", ["int", "double"], "var", "val")
|
2203
|
+
|
2204
|
+
dfs = (
|
2205
|
+
get_df("employee")
|
2206
|
+
.session.createDataFrame(
|
2207
|
+
[(1, 11, 1.1), (2, 12, 1.2)],
|
2208
|
+
["id", "int", "double"],
|
2209
|
+
)
|
2210
|
+
.unpivot("id", ["int", "double"], "var", "val")
|
2211
|
+
)
|
2212
|
+
compare_frames(df, dfs, sort=True, compare_schema=False)
|
2213
|
+
|
2214
|
+
|
2167
2215
|
# https://github.com/eakmanrq/sqlframe/issues/51
|
2168
2216
|
def test_join_full_outer_no_match(
|
2169
2217
|
pyspark_employee: PySparkDataFrame,
|
@@ -39,6 +39,7 @@ def test_quote_preserving_alias_or_name(expression: t.Union[exp.Column, exp.Alia
|
|
39
39
|
("INTEGER", types.IntegerType()),
|
40
40
|
("BIGINT", types.LongType()),
|
41
41
|
("SMALLINT", types.ShortType()),
|
42
|
+
("TINYINT", types.ByteType()),
|
42
43
|
("FLOAT", types.FloatType()),
|
43
44
|
("DOUBLE", types.DoubleType()),
|
44
45
|
("BOOLEAN", types.BooleanType()),
|
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.19.0 → sqlframe-3.21.0}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif
RENAMED
File without changes
|
File without changes
|
{sqlframe-3.19.0 → sqlframe-3.21.0}/blogs/images/add_chatgpt_support/openai_full_rewrite.png
RENAMED
File without changes
|
{sqlframe-3.19.0 → sqlframe-3.21.0}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png
RENAMED
File without changes
|
{sqlframe-3.19.0 → sqlframe-3.21.0}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png
RENAMED
File without changes
|
{sqlframe-3.19.0 → sqlframe-3.21.0}/blogs/images/add_chatgpt_support/sunny_shake_head_no.gif
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
|