sqlframe 3.31.0__tar.gz → 3.31.2__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.31.0 → sqlframe-3.31.2}/PKG-INFO +1 -1
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/_version.py +2 -2
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/base/column.py +2 -1
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/base/functions.py +68 -9
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe.egg-info/PKG-INFO +1 -1
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/test_int_functions.py +77 -2
- {sqlframe-3.31.0 → sqlframe-3.31.2}/.github/CODEOWNERS +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/.github/workflows/main.workflow.yaml +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/.github/workflows/publish.workflow.yaml +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/.gitignore +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/.pre-commit-config.yaml +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/.readthedocs.yaml +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/LICENSE +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/Makefile +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/README.md +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/blogs/add_chatgpt_support.md +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/blogs/images/add_chatgpt_support/adding_ai_to_meal.jpeg +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/blogs/images/add_chatgpt_support/hype_train.gif +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/blogs/images/add_chatgpt_support/nonsense_sql.png +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/blogs/images/add_chatgpt_support/openai_full_rewrite.png +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/blogs/images/add_chatgpt_support/sunny_shake_head_no.gif +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/blogs/images/but_wait_theres_more.gif +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/blogs/images/cake.gif +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/blogs/images/you_get_pyspark_api.gif +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/blogs/sqlframe_universal_dataframe_api.md +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/docs/bigquery.md +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/docs/configuration.md +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/docs/databricks.md +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/docs/docs/bigquery.md +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/docs/docs/duckdb.md +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/docs/docs/images/SF.png +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/docs/docs/images/favicon.png +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/docs/docs/images/sqlframe_logo.png +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/docs/docs/postgres.md +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/docs/duckdb.md +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/docs/images/SF.png +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/docs/images/favicon.png +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/docs/images/sqlframe_logo.png +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/docs/index.md +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/docs/postgres.md +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/docs/redshift.md +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/docs/requirements.txt +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/docs/snowflake.md +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/docs/spark.md +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/docs/standalone.md +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/docs/stylesheets/extra.css +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/mkdocs.yml +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/pytest.ini +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/renovate.json +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/setup.cfg +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/setup.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/LICENSE +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/__init__.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/base/__init__.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/base/_typing.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/base/catalog.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/base/dataframe.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/base/decorators.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/base/exceptions.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/base/function_alternatives.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/base/group.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/base/mixins/__init__.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/base/mixins/catalog_mixins.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/base/mixins/dataframe_mixins.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/base/mixins/readwriter_mixins.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/base/mixins/table_mixins.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/base/normalize.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/base/operations.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/base/readerwriter.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/base/session.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/base/table.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/base/transforms.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/base/types.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/base/udf.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/base/util.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/base/window.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/bigquery/__init__.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/bigquery/catalog.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/bigquery/column.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/bigquery/dataframe.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/bigquery/functions.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/bigquery/functions.pyi +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/bigquery/group.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/bigquery/readwriter.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/bigquery/session.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/bigquery/table.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/bigquery/types.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/bigquery/udf.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/bigquery/window.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/databricks/__init__.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/databricks/catalog.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/databricks/column.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/databricks/dataframe.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/databricks/functions.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/databricks/functions.pyi +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/databricks/group.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/databricks/readwriter.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/databricks/session.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/databricks/table.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/databricks/types.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/databricks/udf.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/databricks/window.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/duckdb/__init__.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/duckdb/catalog.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/duckdb/column.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/duckdb/dataframe.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/duckdb/functions.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/duckdb/functions.pyi +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/duckdb/group.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/duckdb/readwriter.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/duckdb/session.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/duckdb/table.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/duckdb/types.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/duckdb/udf.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/duckdb/window.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/postgres/__init__.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/postgres/catalog.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/postgres/column.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/postgres/dataframe.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/postgres/functions.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/postgres/functions.pyi +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/postgres/group.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/postgres/readwriter.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/postgres/session.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/postgres/table.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/postgres/types.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/postgres/udf.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/postgres/window.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/py.typed +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/redshift/__init__.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/redshift/catalog.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/redshift/column.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/redshift/dataframe.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/redshift/functions.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/redshift/group.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/redshift/readwriter.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/redshift/session.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/redshift/table.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/redshift/types.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/redshift/udf.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/redshift/window.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/snowflake/__init__.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/snowflake/catalog.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/snowflake/column.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/snowflake/dataframe.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/snowflake/functions.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/snowflake/functions.pyi +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/snowflake/group.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/snowflake/readwriter.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/snowflake/session.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/snowflake/table.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/snowflake/types.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/snowflake/udf.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/snowflake/window.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/spark/__init__.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/spark/catalog.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/spark/column.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/spark/dataframe.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/spark/functions.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/spark/functions.pyi +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/spark/group.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/spark/readwriter.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/spark/session.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/spark/table.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/spark/types.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/spark/udf.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/spark/window.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/standalone/__init__.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/standalone/catalog.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/standalone/column.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/standalone/dataframe.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/standalone/functions.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/standalone/group.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/standalone/readwriter.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/standalone/session.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/standalone/table.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/standalone/types.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/standalone/udf.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/standalone/window.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/testing/__init__.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe/testing/utils.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe.egg-info/SOURCES.txt +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe.egg-info/dependency_links.txt +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe.egg-info/requires.txt +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/sqlframe.egg-info/top_level.txt +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/__init__.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/common_fixtures.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/conftest.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/employee.csv +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/employee.json +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/employee.parquet +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/employee_delta/.part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/employee_delta/.part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/employee_delta/.part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/employee_delta/.part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/employee_delta/.part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/employee_delta/.part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/employee_delta/_delta_log/.00000000000000000000.json.crc +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/employee_delta/_delta_log/00000000000000000000.json +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/employee_delta/part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/employee_delta/part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/employee_delta/part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/employee_delta/part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/employee_delta/part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/employee_delta/part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/employee_extra_line.csv +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/issue_219.csv +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds1.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds10.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds11.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds12.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds13.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds14.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds15.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds16.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds17.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds18.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds19.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds2.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds20.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds21.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds22.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds23.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds24.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds25.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds26.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds27.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds28.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds29.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds3.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds30.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds31.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds32.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds33.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds34.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds35.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds36.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds37.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds38.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds39.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds4.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds40.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds41.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds42.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds43.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds44.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds45.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds46.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds47.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds48.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds49.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds5.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds50.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds51.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds52.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds53.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds54.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds55.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds56.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds57.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds58.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds59.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds6.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds60.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds61.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds62.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds63.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds64.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds65.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds66.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds67.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds68.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds69.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds7.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds70.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds71.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds72.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds73.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds74.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds75.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds76.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds77.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds78.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds79.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds8.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds80.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds81.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds82.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds83.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds84.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds85.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds86.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds87.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds88.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds89.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds9.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds90.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds91.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds92.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds93.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds94.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds95.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds96.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds97.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds98.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/fixtures/tpcds/tpcds99.sql +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/__init__.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/__init__.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/bigquery/__init__.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/bigquery/test_bigquery_catalog.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/bigquery/test_bigquery_dataframe.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/bigquery/test_bigquery_session.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/databricks/__init__.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/databricks/test_databricks_catalog.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/databricks/test_databricks_dataframe.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/databricks/test_databricks_session.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/duck/__init__.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/duck/test_duckdb_activate.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/duck/test_duckdb_catalog.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/duck/test_duckdb_dataframe.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/duck/test_duckdb_reader.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/duck/test_duckdb_session.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/duck/test_duckdb_udf.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/duck/test_tpcds.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/postgres/__init__.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/postgres/test_postgres_activate.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/postgres/test_postgres_catalog.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/postgres/test_postgres_dataframe.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/postgres/test_postgres_session.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/redshift/__init__.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/redshift/test_redshift_catalog.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/redshift/test_redshift_session.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/snowflake/__init__.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/snowflake/test_snowflake_catalog.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/snowflake/test_snowflake_dataframe.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/snowflake/test_snowflake_session.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/spark/__init__.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/spark/test_spark_catalog.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/spark/test_spark_dataframe.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/test_engine_column.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/test_engine_dataframe.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/test_engine_reader.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/test_engine_session.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/test_engine_table.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/test_engine_writer.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/engines/test_int_testing.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/fixtures.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/test_int_dataframe.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/test_int_dataframe_stats.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/test_int_grouped_data.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/integration/test_int_session.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/types.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/unit/__init__.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/unit/bigquery/__init__.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/unit/bigquery/test_activate.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/unit/conftest.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/unit/databricks/__init__.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/unit/databricks/test_activate.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/unit/duck/__init__.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/unit/duck/test_activate.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/unit/duck/test_reader_options.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/unit/postgres/__init__.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/unit/postgres/test_activate.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/unit/redshift/__init__.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/unit/redshift/test_activate.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/unit/snowflake/__init__.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/unit/snowflake/test_activate.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/unit/spark/__init__.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/unit/spark/test_activate.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/unit/spark/test_reader_options.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/unit/standalone/__init__.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/unit/standalone/fixtures.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/unit/standalone/test_activate.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/unit/standalone/test_column.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/unit/standalone/test_dataframe.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/unit/standalone/test_dataframe_writer.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/unit/standalone/test_functions.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/unit/standalone/test_session.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/unit/standalone/test_session_case_sensitivity.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/unit/standalone/test_types.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/unit/standalone/test_window.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/unit/test_activate.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/unit/test_base_reader_options.py +0 -0
- {sqlframe-3.31.0 → sqlframe-3.31.2}/tests/unit/test_util.py +0 -0
@@ -430,8 +430,9 @@ class Column:
|
|
430
430
|
)
|
431
431
|
|
432
432
|
def over(self, window: WindowSpec) -> Column:
|
433
|
+
column_expression = self.column_expression.meta.get("window_func", self.column_expression)
|
433
434
|
window_expression = window.expression.copy()
|
434
|
-
window_expression.set("this",
|
435
|
+
window_expression.set("this", column_expression)
|
435
436
|
return Column(window_expression)
|
436
437
|
|
437
438
|
def getItem(self, key: t.Any) -> Column:
|
@@ -625,11 +625,22 @@ def covar_samp(col1: ColumnOrName, col2: ColumnOrName) -> Column:
|
|
625
625
|
def first(col: ColumnOrName, ignorenulls: t.Optional[bool] = None) -> Column:
|
626
626
|
session = _get_session()
|
627
627
|
|
628
|
-
if session._is_duckdb:
|
629
|
-
ignorenulls = None
|
630
|
-
|
631
628
|
this = Column.invoke_expression_over_column(col, expression.First)
|
632
629
|
if ignorenulls:
|
630
|
+
if session._is_duckdb:
|
631
|
+
return Column(
|
632
|
+
expression.Filter(
|
633
|
+
this=this.expression,
|
634
|
+
expression=expression.Where(
|
635
|
+
this=expression.Not(
|
636
|
+
this=expression.Is(
|
637
|
+
this=Column.ensure_col(col).expression,
|
638
|
+
expression=expression.Null(),
|
639
|
+
)
|
640
|
+
)
|
641
|
+
),
|
642
|
+
)
|
643
|
+
)
|
633
644
|
return Column.invoke_expression_over_column(this, expression.IgnoreNulls)
|
634
645
|
return this
|
635
646
|
|
@@ -3266,12 +3277,57 @@ def find_in_set(str: ColumnOrName, str_array: ColumnOrName) -> Column:
|
|
3266
3277
|
return Column.invoke_anonymous_function(str, "find_in_set", str_array)
|
3267
3278
|
|
3268
3279
|
|
3269
|
-
@meta(unsupported_engines="
|
3280
|
+
@meta(unsupported_engines=["bigquery", "postgres", "snowflake"])
|
3270
3281
|
def first_value(col: ColumnOrName, ignoreNulls: t.Optional[t.Union[bool, Column]] = None) -> Column:
|
3282
|
+
"""Returns the first value of `col` for a group of rows. It will return the first non-null
|
3283
|
+
value it sees when `ignoreNulls` is set to true. If all values are null, then null is returned.
|
3284
|
+
|
3285
|
+
Parameters
|
3286
|
+
----------
|
3287
|
+
col : :class:`~pyspark.sql.Column` or str
|
3288
|
+
target column to work on.
|
3289
|
+
ignorenulls : :class:`~pyspark.sql.Column` or bool
|
3290
|
+
if first value is null then look for first non-null value.
|
3291
|
+
|
3292
|
+
Returns
|
3293
|
+
-------
|
3294
|
+
:class:`~pyspark.sql.Column`
|
3295
|
+
some value of `col` for a group of rows.
|
3296
|
+
|
3297
|
+
Examples
|
3298
|
+
--------
|
3299
|
+
>>> import pyspark.sql.functions as sf
|
3300
|
+
>>> spark.createDataFrame(
|
3301
|
+
... [(None, 1), ("a", 2), ("a", 3), ("b", 8), (None, 2)], ["a", "b"]
|
3302
|
+
... ).select(sf.first_value('a'), sf.first_value('b')).show()
|
3303
|
+
+--------------+--------------+
|
3304
|
+
|first_value(a)|first_value(b)|
|
3305
|
+
+--------------+--------------+
|
3306
|
+
| NULL| 1|
|
3307
|
+
+--------------+--------------+
|
3308
|
+
|
3309
|
+
>>> import pyspark.sql.functions as sf
|
3310
|
+
>>> spark.createDataFrame(
|
3311
|
+
... [(None, 1), ("a", 2), ("a", 3), ("b", 8), (None, 2)], ["a", "b"]
|
3312
|
+
... ).select(sf.first_value('a', True), sf.first_value('b', True)).show()
|
3313
|
+
+--------------+--------------+
|
3314
|
+
|first_value(a)|first_value(b)|
|
3315
|
+
+--------------+--------------+
|
3316
|
+
| a| 1|
|
3317
|
+
+--------------+--------------+
|
3318
|
+
"""
|
3319
|
+
session = _get_session()
|
3320
|
+
|
3271
3321
|
column = Column.invoke_expression_over_column(col, expression.FirstValue)
|
3272
3322
|
|
3273
3323
|
if ignoreNulls:
|
3274
|
-
|
3324
|
+
column = Column(expression.IgnoreNulls(this=column.column_expression))
|
3325
|
+
|
3326
|
+
if session._is_duckdb:
|
3327
|
+
agg_func = first(col, ignoreNulls) # type: ignore
|
3328
|
+
agg_func.expression._meta = agg_func.expression._meta or {}
|
3329
|
+
agg_func.expression._meta["window_func"] = column.expression
|
3330
|
+
return agg_func
|
3275
3331
|
return column
|
3276
3332
|
|
3277
3333
|
|
@@ -3930,13 +3986,16 @@ def last_value(col: ColumnOrName, ignoreNulls: t.Optional[t.Union[bool, Column]]
|
|
3930
3986
|
"""
|
3931
3987
|
session = _get_session()
|
3932
3988
|
|
3933
|
-
if session._is_duckdb:
|
3934
|
-
return last(col, ignoreNulls) # type: ignore
|
3935
|
-
|
3936
3989
|
column = Column.invoke_expression_over_column(col, expression.LastValue)
|
3937
3990
|
|
3938
3991
|
if ignoreNulls:
|
3939
|
-
|
3992
|
+
column = Column(expression.IgnoreNulls(this=column.column_expression))
|
3993
|
+
|
3994
|
+
if session._is_duckdb:
|
3995
|
+
agg_func = last(col, ignoreNulls) # type: ignore
|
3996
|
+
agg_func.expression._meta = agg_func.expression._meta or {}
|
3997
|
+
agg_func.expression._meta["window_func"] = column.expression
|
3998
|
+
return agg_func
|
3940
3999
|
return column
|
3941
4000
|
|
3942
4001
|
|
@@ -6,6 +6,7 @@ import typing as t
|
|
6
6
|
from collections import Counter
|
7
7
|
from decimal import Decimal
|
8
8
|
|
9
|
+
import pandas as pd
|
9
10
|
import pytest
|
10
11
|
import pytz
|
11
12
|
from pyspark.sql import SparkSession as PySparkSession
|
@@ -3752,8 +3753,10 @@ def test_find_in_set(get_session_and_func, get_func):
|
|
3752
3753
|
assert df.select(find_in_set(df.a, df.b).alias("r")).first()[0] == 3
|
3753
3754
|
|
3754
3755
|
|
3755
|
-
def test_first_value(get_session_and_func, get_func):
|
3756
|
+
def test_first_value(get_session_and_func, get_func, get_window):
|
3756
3757
|
session, first_value = get_session_and_func("first_value")
|
3758
|
+
col = get_func("col", session)
|
3759
|
+
Window = get_window(session)
|
3757
3760
|
assert session.createDataFrame(
|
3758
3761
|
[(None, 1), ("a", 2), ("a", 3), ("b", 8), ("b", 2)], ["a", "b"]
|
3759
3762
|
).select(first_value("a"), first_value("b")).collect() == [Row(value1=None, value2=1)]
|
@@ -3762,6 +3765,41 @@ def test_first_value(get_session_and_func, get_func):
|
|
3762
3765
|
).select(first_value("a", True), first_value("b", True)).collect() == [
|
3763
3766
|
Row(value1="a", value2=1)
|
3764
3767
|
]
|
3768
|
+
data = {
|
3769
|
+
"b": [None, None, "a", None, "b", "c", None, None, None, "d"],
|
3770
|
+
"idx": list(range(10)),
|
3771
|
+
}
|
3772
|
+
window = (
|
3773
|
+
Window().orderBy(col("idx").asc_nulls_first()).rowsBetween(Window.unboundedPreceding, 0)
|
3774
|
+
)
|
3775
|
+
assert session.createDataFrame(pd.DataFrame(data)).withColumn(
|
3776
|
+
"bf", first_value("b", ignoreNulls=True).over(window)
|
3777
|
+
).collect() == [
|
3778
|
+
Row(b=None, idx=0, bf=None),
|
3779
|
+
Row(b=None, idx=1, bf=None),
|
3780
|
+
Row(b="a", idx=2, bf="a"),
|
3781
|
+
Row(b=None, idx=3, bf="a"),
|
3782
|
+
Row(b="b", idx=4, bf="a"),
|
3783
|
+
Row(b="c", idx=5, bf="a"),
|
3784
|
+
Row(b=None, idx=6, bf="a"),
|
3785
|
+
Row(b=None, idx=7, bf="a"),
|
3786
|
+
Row(b=None, idx=8, bf="a"),
|
3787
|
+
Row(b="d", idx=9, bf="a"),
|
3788
|
+
]
|
3789
|
+
assert session.createDataFrame(pd.DataFrame(data)).withColumn(
|
3790
|
+
"bf", first_value("b").over(window)
|
3791
|
+
).collect() == [
|
3792
|
+
Row(b=None, idx=0, bf=None),
|
3793
|
+
Row(b=None, idx=1, bf=None),
|
3794
|
+
Row(b="a", idx=2, bf=None),
|
3795
|
+
Row(b=None, idx=3, bf=None),
|
3796
|
+
Row(b="b", idx=4, bf=None),
|
3797
|
+
Row(b="c", idx=5, bf=None),
|
3798
|
+
Row(b=None, idx=6, bf=None),
|
3799
|
+
Row(b=None, idx=7, bf=None),
|
3800
|
+
Row(b=None, idx=8, bf=None),
|
3801
|
+
Row(b="d", idx=9, bf=None),
|
3802
|
+
]
|
3765
3803
|
|
3766
3804
|
|
3767
3805
|
def test_get(get_session_and_func, get_func):
|
@@ -3959,14 +3997,51 @@ def test_json_object_keys(get_session_and_func, get_func):
|
|
3959
3997
|
]
|
3960
3998
|
|
3961
3999
|
|
3962
|
-
def test_last_value(get_session_and_func, get_func):
|
4000
|
+
def test_last_value(get_session_and_func, get_func, get_window):
|
3963
4001
|
session, last_value = get_session_and_func("last_value")
|
4002
|
+
col = get_func("col", session)
|
4003
|
+
Window = get_window(session)
|
3964
4004
|
assert session.createDataFrame(
|
3965
4005
|
[("a", 1), ("a", 2), ("a", 3), ("b", 8), (None, 2)], ["a", "b"]
|
3966
4006
|
).select(last_value("a"), last_value("b")).collect() == [Row(value1=None, value2=2)]
|
3967
4007
|
assert session.createDataFrame(
|
3968
4008
|
[("a", 1), ("a", 2), ("a", 3), ("b", 8), (None, 2)], ["a", "b"]
|
3969
4009
|
).select(last_value("a", True), last_value("b", True)).collect() == [Row(value1="b", value2=2)]
|
4010
|
+
data = {
|
4011
|
+
"b": ["a", None, None, None, "b", "c", None, None, None, "d"],
|
4012
|
+
"idx": list(range(10)),
|
4013
|
+
}
|
4014
|
+
window = (
|
4015
|
+
Window().orderBy(col("idx").asc_nulls_first()).rowsBetween(Window.unboundedPreceding, 0)
|
4016
|
+
)
|
4017
|
+
assert session.createDataFrame(pd.DataFrame(data)).withColumn(
|
4018
|
+
"bf", last_value("b", ignoreNulls=True).over(window)
|
4019
|
+
).collect() == [
|
4020
|
+
Row(b="a", idx=0, bf="a"),
|
4021
|
+
Row(b=None, idx=1, bf="a"),
|
4022
|
+
Row(b=None, idx=2, bf="a"),
|
4023
|
+
Row(b=None, idx=3, bf="a"),
|
4024
|
+
Row(b="b", idx=4, bf="b"),
|
4025
|
+
Row(b="c", idx=5, bf="c"),
|
4026
|
+
Row(b=None, idx=6, bf="c"),
|
4027
|
+
Row(b=None, idx=7, bf="c"),
|
4028
|
+
Row(b=None, idx=8, bf="c"),
|
4029
|
+
Row(b="d", idx=9, bf="d"),
|
4030
|
+
]
|
4031
|
+
assert session.createDataFrame(pd.DataFrame(data)).withColumn(
|
4032
|
+
"bf", last_value("b").over(window)
|
4033
|
+
).collect() == [
|
4034
|
+
Row(b="a", idx=0, bf="a"),
|
4035
|
+
Row(b=None, idx=1, bf=None),
|
4036
|
+
Row(b=None, idx=2, bf=None),
|
4037
|
+
Row(b=None, idx=3, bf=None),
|
4038
|
+
Row(b="b", idx=4, bf="b"),
|
4039
|
+
Row(b="c", idx=5, bf="c"),
|
4040
|
+
Row(b=None, idx=6, bf=None),
|
4041
|
+
Row(b=None, idx=7, bf=None),
|
4042
|
+
Row(b=None, idx=8, bf=None),
|
4043
|
+
Row(b="d", idx=9, bf="d"),
|
4044
|
+
]
|
3970
4045
|
|
3971
4046
|
|
3972
4047
|
def test_lcase(get_session_and_func, get_func):
|
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.31.0 → sqlframe-3.31.2}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif
RENAMED
File without changes
|
File without changes
|
{sqlframe-3.31.0 → sqlframe-3.31.2}/blogs/images/add_chatgpt_support/openai_full_rewrite.png
RENAMED
File without changes
|
{sqlframe-3.31.0 → sqlframe-3.31.2}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png
RENAMED
File without changes
|
{sqlframe-3.31.0 → sqlframe-3.31.2}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png
RENAMED
File without changes
|
{sqlframe-3.31.0 → sqlframe-3.31.2}/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
|
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
|