From 16640c9b4fbe32c96d2e314e2c650978186f83f3 Mon Sep 17 00:00:00 2001 From: GBBBAS Date: Mon, 4 Mar 2024 14:51:16 +0000 Subject: [PATCH 1/9] Fix for pydantic Signed-off-by: GBBBAS Author: GBBBAS --- setup.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/setup.py b/setup.py index 4a6283317..d7e54aa5e 100644 --- a/setup.py +++ b/setup.py @@ -39,10 +39,9 @@ "grpcio>=1.48.1", "grpcio-status>=1.48.1", "googleapis-common-protos>=1.56.4", + "pydantic==2.4.2", "langchain==0.0.291", "openai==0.27.8", - "sqlparams==5.1.0", - "entsoe-py==0.5.10", ] PYSPARK_PACKAGES = [ @@ -53,7 +52,6 @@ PIPELINE_PACKAGES = [ "dependency-injector==4.41.0", "databricks-sdk==0.20.0", - "pydantic==2.4.2", "azure-storage-file-datalake==12.12.0", "azure-mgmt-storage==21.0.0", "azure-mgmt-eventgrid==10.2.0", @@ -67,6 +65,8 @@ "ecmwf-api-client==1.6.3", "netCDF4==1.6.4", "joblib==1.3.2", + "sqlparams==5.1.0", + "entsoe-py==0.5.10", ] EXTRAS_DEPENDENCIES: dict[str, list[str]] = { From 19c05a0a2b7d0c757a58d64ff5df5d42c3f06541 Mon Sep 17 00:00:00 2001 From: GBBBAS <42962356+GBBBAS@users.noreply.github.com> Date: Mon, 4 Mar 2024 15:02:15 +0000 Subject: [PATCH 2/9] Revert "Fix for Pydantic Import" --- setup.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/setup.py b/setup.py index d7e54aa5e..4a6283317 100644 --- a/setup.py +++ b/setup.py @@ -39,9 +39,10 @@ "grpcio>=1.48.1", "grpcio-status>=1.48.1", "googleapis-common-protos>=1.56.4", - "pydantic==2.4.2", "langchain==0.0.291", "openai==0.27.8", + "sqlparams==5.1.0", + "entsoe-py==0.5.10", ] PYSPARK_PACKAGES = [ @@ -52,6 +53,7 @@ PIPELINE_PACKAGES = [ "dependency-injector==4.41.0", "databricks-sdk==0.20.0", + "pydantic==2.4.2", "azure-storage-file-datalake==12.12.0", "azure-mgmt-storage==21.0.0", "azure-mgmt-eventgrid==10.2.0", @@ -65,8 +67,6 @@ "ecmwf-api-client==1.6.3", "netCDF4==1.6.4", "joblib==1.3.2", - "sqlparams==5.1.0", - "entsoe-py==0.5.10", ] EXTRAS_DEPENDENCIES: dict[str, list[str]] = { From 9e7d577d8289e2282c151794939b52ecf9404df3 Mon Sep 17 00:00:00 2001 From: GBBBAS <42962356+GBBBAS@users.noreply.github.com> Date: Mon, 4 Mar 2024 15:07:17 +0000 Subject: [PATCH 3/9] Update Pydantic (#690) Signed-off-by: GBBBAS <42962356+GBBBAS@users.noreply.github.com> --- setup.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/setup.py b/setup.py index 4a6283317..7c644ee81 100644 --- a/setup.py +++ b/setup.py @@ -41,8 +41,7 @@ "googleapis-common-protos>=1.56.4", "langchain==0.0.291", "openai==0.27.8", - "sqlparams==5.1.0", - "entsoe-py==0.5.10", + "pydantic==2.4.2", ] PYSPARK_PACKAGES = [ @@ -53,7 +52,6 @@ PIPELINE_PACKAGES = [ "dependency-injector==4.41.0", "databricks-sdk==0.20.0", - "pydantic==2.4.2", "azure-storage-file-datalake==12.12.0", "azure-mgmt-storage==21.0.0", "azure-mgmt-eventgrid==10.2.0", @@ -67,6 +65,8 @@ "ecmwf-api-client==1.6.3", "netCDF4==1.6.4", "joblib==1.3.2", + "sqlparams==5.1.0", + "entsoe-py==0.5.10", ] EXTRAS_DEPENDENCIES: dict[str, list[str]] = { From 0943b7366513cdf5f4a1ac1bad2fd5c34f36af35 Mon Sep 17 00:00:00 2001 From: GBBBAS <42962356+GBBBAS@users.noreply.github.com> Date: Tue, 5 Mar 2024 16:02:21 +0100 Subject: [PATCH 4/9] Pydantic version update (#693) * Fix for pydantic Signed-off-by: GBBBAS * Revert "Fix for Pydantic Import" * Update Pydantic (#690) Signed-off-by: GBBBAS <42962356+GBBBAS@users.noreply.github.com> --------- Signed-off-by: GBBBAS Signed-off-by: GBBBAS <42962356+GBBBAS@users.noreply.github.com> From 48d8d1b6d8538fbb37cc059092c5c0b4d314d3f1 Mon Sep 17 00:00:00 2001 From: GBBBAS <42962356+GBBBAS@users.noreply.github.com> Date: Wed, 6 Mar 2024 08:35:25 +0100 Subject: [PATCH 5/9] Update jinja package (#694) Signed-off-by: GBBBAS <42962356+GBBBAS@users.noreply.github.com> --- environment.yml | 2 +- src/api/requirements.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/environment.yml b/environment.yml index 238e1e5ef..436a16278 100644 --- a/environment.yml +++ b/environment.yml @@ -20,7 +20,7 @@ channels: dependencies: - python>=3.9,<3.12 - mkdocs-material-extensions==1.1.1 - - jinja2==3.1.2 + - jinja2==3.1.3 - pytest==7.4.0 - pytest-mock==3.11.1 - pytest-cov==4.1.0 diff --git a/src/api/requirements.txt b/src/api/requirements.txt index 636b7e55d..08fd59eb0 100644 --- a/src/api/requirements.txt +++ b/src/api/requirements.txt @@ -11,7 +11,7 @@ azure-identity==1.12.0 oauthlib>=3.2.2 pandas>=2.0.1,<3.0.0 numpy==1.23.5 -jinja2==3.1.2 +jinja2==3.1.3 pytz==2022.6 semver==3.0.0 xlrd==2.0.1 From 37ffc600a931a05df694dbc94a0d8385e5d3b977 Mon Sep 17 00:00:00 2001 From: GBBBAS <42962356+GBBBAS@users.noreply.github.com> Date: Wed, 6 Mar 2024 08:46:18 +0100 Subject: [PATCH 6/9] Update asyncio Signed-off-by: GBBBAS <42962356+GBBBAS@users.noreply.github.com> --- environment.yml | 2 +- src/api/requirements.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/environment.yml b/environment.yml index 436a16278..40038e9d0 100644 --- a/environment.yml +++ b/environment.yml @@ -72,7 +72,7 @@ dependencies: - dependency-injector==4.41.0 - azure-functions==1.15.0 - azure-mgmt-eventgrid==10.2.0 - - nest_asyncio==1.5.6 + - nest_asyncio==1.6.0 - hvac==1.1.1 - langchain==0.0.291 - build==0.10.0 diff --git a/src/api/requirements.txt b/src/api/requirements.txt index 08fd59eb0..e01cdf5b2 100644 --- a/src/api/requirements.txt +++ b/src/api/requirements.txt @@ -1,7 +1,7 @@ # Do not include azure-functions-worker as it may conflict with the Azure Functions platform azure-functions==1.15.0 fastapi==0.103.2 -nest_asyncio==1.5.6 +nest_asyncio==1.6.0 pydantic==2.4.2 # turbodbc==4.11.0 pyodbc==4.0.39 From c652a83afb4f71b587768fe40c11450da52b4cf1 Mon Sep 17 00:00:00 2001 From: GBBBAS <42962356+GBBBAS@users.noreply.github.com> Date: Wed, 6 Mar 2024 08:56:02 +0100 Subject: [PATCH 7/9] Update asyncio (#695) Signed-off-by: GBBBAS <42962356+GBBBAS@users.noreply.github.com> From 884c5afc138020ce51acb6449b6a35e4d3fbc6a8 Mon Sep 17 00:00:00 2001 From: GBBBAS <42962356+GBBBAS@users.noreply.github.com> Date: Wed, 6 Mar 2024 13:19:44 +0100 Subject: [PATCH 8/9] Package Updates (#698) Signed-off-by: GBBBAS <42962356+GBBBAS@users.noreply.github.com> --- environment.yml | 8 ++++---- setup.py | 4 ++-- src/api/requirements.txt | 19 +++++++++---------- src/api/v1/circular_average.py | 4 +--- src/api/v1/circular_standard_deviation.py | 4 +--- src/api/v1/interpolate.py | 4 +--- src/api/v1/interpolation_at_time.py | 4 +--- src/api/v1/latest.py | 6 ++---- src/api/v1/metadata.py | 6 ++---- src/api/v1/models.py | 2 +- src/api/v1/raw.py | 4 +--- src/api/v1/resample.py | 4 +--- src/api/v1/sql.py | 4 +--- src/api/v1/summary.py | 3 --- src/api/v1/time_weighted_average.py | 3 --- .../llm/chatopenai_databricks_connector.py | 12 +++++++----- 16 files changed, 34 insertions(+), 57 deletions(-) diff --git a/environment.yml b/environment.yml index 40038e9d0..e374bb754 100644 --- a/environment.yml +++ b/environment.yml @@ -37,7 +37,7 @@ dependencies: - azure-mgmt-storage==21.0.0 - boto3==1.28.2 - pyodbc==4.0.39 - - fastapi==0.103.2 + - fastapi==0.110.0 - httpx==0.24.1 - pyspark>=3.3.0,<3.6.0 - delta-spark>=2.2.0,<3.1.0 @@ -45,7 +45,7 @@ dependencies: - grpcio-status>=1.48.1 - googleapis-common-protos>=1.56.4 - openjdk==11.0.15 - - openai==0.27.8 + - openai==1.13.3 - mkdocs-material==9.3.1 - mkdocstrings==0.22.0 - mkdocstrings-python==1.4.0 @@ -67,14 +67,14 @@ dependencies: - ecmwf-api-client==1.6.3 - netCDF4==1.6.4 - black==24.1.0 + - joblib==1.3.2 - pip: - databricks-sdk==0.20.0 - dependency-injector==4.41.0 - azure-functions==1.15.0 - azure-mgmt-eventgrid==10.2.0 - - nest_asyncio==1.6.0 - hvac==1.1.1 - - langchain==0.0.291 + - langchain==0.1.11 - build==0.10.0 - deltalake==0.10.1 - trio==0.22.1 diff --git a/setup.py b/setup.py index 7c644ee81..164ae732f 100644 --- a/setup.py +++ b/setup.py @@ -39,8 +39,8 @@ "grpcio>=1.48.1", "grpcio-status>=1.48.1", "googleapis-common-protos>=1.56.4", - "langchain==0.0.291", - "openai==0.27.8", + "langchain==0.1.11", + "openai==1.13.3", "pydantic==2.4.2", ] diff --git a/src/api/requirements.txt b/src/api/requirements.txt index e01cdf5b2..0ffb70685 100644 --- a/src/api/requirements.txt +++ b/src/api/requirements.txt @@ -1,24 +1,23 @@ # Do not include azure-functions-worker as it may conflict with the Azure Functions platform -azure-functions==1.15.0 -fastapi==0.103.2 -nest_asyncio==1.6.0 +azure-functions==1.18.0 +fastapi==0.110.0 pydantic==2.4.2 # turbodbc==4.11.0 pyodbc==4.0.39 importlib_metadata>=1.0.0 databricks-sql-connector==3.1.0 -azure-identity==1.12.0 +azure-identity==1.15.0 oauthlib>=3.2.2 pandas>=2.0.1,<3.0.0 -numpy==1.23.5 +numpy==1.26.4 jinja2==3.1.3 -pytz==2022.6 -semver==3.0.0 +pytz==2024.1 +semver==3.0.2 xlrd==2.0.1 -packaging==23.1 +packaging==23.2 grpcio>=1.48.1 grpcio-status>=1.48.1 googleapis-common-protos>=1.56.4 -langchain==0.0.291 -openai==0.27.8 +langchain==0.1.11 +openai==1.13.3 pyjwt==2.8.0 \ No newline at end of file diff --git a/src/api/v1/circular_average.py b/src/api/v1/circular_average.py index 528c69299..e9ccf12a3 100644 --- a/src/api/v1/circular_average.py +++ b/src/api/v1/circular_average.py @@ -17,7 +17,7 @@ from typing import Union from src.api.FastAPIApp import api_v1_router from fastapi import HTTPException, Depends, Body -import nest_asyncio + from src.sdk.python.rtdip_sdk.queries.time_series import circular_average from src.api.v1.models import ( BaseQueryParams, @@ -34,8 +34,6 @@ ) from src.api.v1.common import common_api_setup_tasks, json_response -nest_asyncio.apply() - def circular_average_events_get( base_query_parameters, diff --git a/src/api/v1/circular_standard_deviation.py b/src/api/v1/circular_standard_deviation.py index 63a9fb642..6069e4081 100644 --- a/src/api/v1/circular_standard_deviation.py +++ b/src/api/v1/circular_standard_deviation.py @@ -18,7 +18,7 @@ import numpy as np from src.api.FastAPIApp import api_v1_router from fastapi import HTTPException, Depends, Body -import nest_asyncio + from src.sdk.python.rtdip_sdk.queries.time_series import circular_standard_deviation from src.api.v1.models import ( BaseQueryParams, @@ -35,8 +35,6 @@ ) from src.api.v1.common import common_api_setup_tasks, json_response -nest_asyncio.apply() - def circular_standard_deviation_events_get( base_query_parameters, diff --git a/src/api/v1/interpolate.py b/src/api/v1/interpolate.py index 6e856a40e..f0a89dfc5 100644 --- a/src/api/v1/interpolate.py +++ b/src/api/v1/interpolate.py @@ -17,7 +17,7 @@ from src.api.FastAPIApp import api_v1_router from fastapi import HTTPException, Depends, Body -import nest_asyncio + from src.sdk.python.rtdip_sdk.queries.time_series import interpolate from src.api.v1.models import ( BaseQueryParams, @@ -35,8 +35,6 @@ ) from src.api.v1.common import common_api_setup_tasks, json_response -nest_asyncio.apply() - def interpolate_events_get( base_query_parameters, diff --git a/src/api/v1/interpolation_at_time.py b/src/api/v1/interpolation_at_time.py index c43904b4e..c41f53033 100644 --- a/src/api/v1/interpolation_at_time.py +++ b/src/api/v1/interpolation_at_time.py @@ -16,7 +16,7 @@ from typing import Union from src.api.FastAPIApp import api_v1_router from fastapi import HTTPException, Depends, Body -import nest_asyncio + from src.sdk.python.rtdip_sdk.queries.time_series import interpolation_at_time from src.api.v1.models import ( BaseQueryParams, @@ -32,8 +32,6 @@ ) from src.api.v1.common import common_api_setup_tasks, json_response -nest_asyncio.apply() - def interpolation_at_time_events_get( base_query_parameters, diff --git a/src/api/v1/latest.py b/src/api/v1/latest.py index 37f43665d..db5cdaa57 100644 --- a/src/api/v1/latest.py +++ b/src/api/v1/latest.py @@ -14,8 +14,8 @@ import logging -from fastapi import Query, HTTPException, Depends, Body -import nest_asyncio +from fastapi import HTTPException, Depends, Body + from src.sdk.python.rtdip_sdk.queries.time_series import latest from src.api.v1.models import ( BaseQueryParams, @@ -30,8 +30,6 @@ from src.api.v1.common import common_api_setup_tasks, json_response from src.api.FastAPIApp import api_v1_router -nest_asyncio.apply() - def latest_retrieval_get( query_parameters, metadata_query_parameters, limit_offset_parameters, base_headers diff --git a/src/api/v1/metadata.py b/src/api/v1/metadata.py index 0b0ad63df..dd2595dc0 100644 --- a/src/api/v1/metadata.py +++ b/src/api/v1/metadata.py @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. import logging -from fastapi import Query, HTTPException, Depends, Body -import nest_asyncio +from fastapi import HTTPException, Depends, Body + from src.sdk.python.rtdip_sdk.queries import metadata from src.api.v1.models import ( BaseQueryParams, @@ -28,8 +28,6 @@ from src.api.v1.common import common_api_setup_tasks, json_response from src.api.FastAPIApp import api_v1_router -nest_asyncio.apply() - def metadata_retrieval_get( query_parameters, metadata_query_parameters, limit_offset_parameters, base_headers diff --git a/src/api/v1/models.py b/src/api/v1/models.py index 1434ee026..3c1cc2f1c 100644 --- a/src/api/v1/models.py +++ b/src/api/v1/models.py @@ -168,7 +168,7 @@ class HTTPError(BaseModel): detail: str class Config: - schema_extra = ( + json_schema_extra = ( { "example": {"detail": "HTTPException raised."}, }, diff --git a/src/api/v1/raw.py b/src/api/v1/raw.py index 058b9db87..a3d960f8c 100644 --- a/src/api/v1/raw.py +++ b/src/api/v1/raw.py @@ -14,7 +14,7 @@ import logging import numpy as np from fastapi import HTTPException, Depends, Body -import nest_asyncio + from src.sdk.python.rtdip_sdk.queries.time_series import raw from src.api.v1.models import ( BaseHeaders, @@ -30,8 +30,6 @@ from src.api.v1.common import common_api_setup_tasks, json_response from src.api.FastAPIApp import api_v1_router -nest_asyncio.apply() - def raw_events_get( base_query_parameters, diff --git a/src/api/v1/resample.py b/src/api/v1/resample.py index 45b6fb0d5..9b0059351 100644 --- a/src/api/v1/resample.py +++ b/src/api/v1/resample.py @@ -17,7 +17,7 @@ from typing import Union from src.api.FastAPIApp import api_v1_router from fastapi import HTTPException, Depends, Body -import nest_asyncio + from src.sdk.python.rtdip_sdk.queries.time_series import resample from src.api.v1.models import ( BaseQueryParams, @@ -34,8 +34,6 @@ ) from src.api.v1.common import common_api_setup_tasks, json_response -nest_asyncio.apply() - def resample_events_get( base_query_parameters, diff --git a/src/api/v1/sql.py b/src/api/v1/sql.py index 3d42020ae..3b56e37cd 100644 --- a/src/api/v1/sql.py +++ b/src/api/v1/sql.py @@ -15,7 +15,7 @@ import logging from fastapi import HTTPException, Depends, Body -import nest_asyncio + from src.sdk.python.rtdip_sdk.queries.sql.sql_query import SQLQueryBuilder from src.api.v1.models import ( AuthQueryParams, @@ -29,8 +29,6 @@ from src.api.v1.common import common_api_setup_tasks, json_response from src.api.FastAPIApp import api_v1_router -nest_asyncio.apply() - def sql_get( base_query_parameters, diff --git a/src/api/v1/summary.py b/src/api/v1/summary.py index 672532d51..a42c75041 100644 --- a/src/api/v1/summary.py +++ b/src/api/v1/summary.py @@ -15,7 +15,6 @@ import logging from fastapi import HTTPException, Depends, Body -import nest_asyncio from src.sdk.python.rtdip_sdk.queries.time_series import summary from src.api.v1.models import ( BaseHeaders, @@ -31,8 +30,6 @@ from src.api.v1.common import common_api_setup_tasks, json_response from src.api.FastAPIApp import api_v1_router -nest_asyncio.apply() - def summary_events_get( base_query_parameters, diff --git a/src/api/v1/time_weighted_average.py b/src/api/v1/time_weighted_average.py index 084fc2332..a9fbdb611 100644 --- a/src/api/v1/time_weighted_average.py +++ b/src/api/v1/time_weighted_average.py @@ -16,7 +16,6 @@ from typing import Union from src.api.FastAPIApp import api_v1_router from fastapi import HTTPException, Depends, Body -import nest_asyncio from src.sdk.python.rtdip_sdk.queries.time_series import time_weighted_average from src.api.v1.models import ( BaseQueryParams, @@ -33,8 +32,6 @@ ) from src.api.v1.common import common_api_setup_tasks, json_response -nest_asyncio.apply() - def time_weighted_average_events_get( base_query_parameters, diff --git a/src/sdk/python/rtdip_sdk/connectors/llm/chatopenai_databricks_connector.py b/src/sdk/python/rtdip_sdk/connectors/llm/chatopenai_databricks_connector.py index 5957af7df..c0a639573 100644 --- a/src/sdk/python/rtdip_sdk/connectors/llm/chatopenai_databricks_connector.py +++ b/src/sdk/python/rtdip_sdk/connectors/llm/chatopenai_databricks_connector.py @@ -12,10 +12,10 @@ # See the License for the specific language governing permissions and # limitations under the License. -from langchain.chat_models import ChatOpenAI -from langchain import SQLDatabase -from langchain.agents import create_sql_agent -from langchain.agents.agent_toolkits import SQLDatabaseToolkit +from langchain_community.chat_models import ChatOpenAI +from langchain_community.utilities.sql_database import SQLDatabase +from langchain_community.agent_toolkits import create_sql_agent +from langchain_community.agent_toolkits import SQLDatabaseToolkit from langchain.agents.agent_types import AgentType import logging @@ -144,7 +144,9 @@ def execute(self, query: str) -> None: logging.exception("error while executing the query") raise e - def fetch_all(self) -> list: + def fetch_all( + self, + ) -> list: """ Gets all rows of a query. From 2b76b618ac186ab660fda25cda99f5de3cdddde8 Mon Sep 17 00:00:00 2001 From: GBBBAS <42962356+GBBBAS@users.noreply.github.com> Date: Wed, 13 Mar 2024 10:27:11 +0000 Subject: [PATCH 9/9] Update Windows Timestamp Column in TWA Signed-off-by: GBBBAS <42962356+GBBBAS@users.noreply.github.com> --- .../rtdip_sdk/queries/time_series/_time_series_query_builder.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sdk/python/rtdip_sdk/queries/time_series/_time_series_query_builder.py b/src/sdk/python/rtdip_sdk/queries/time_series/_time_series_query_builder.py index 45e57f934..421085bf0 100644 --- a/src/sdk/python/rtdip_sdk/queries/time_series/_time_series_query_builder.py +++ b/src/sdk/python/rtdip_sdk/queries/time_series/_time_series_query_builder.py @@ -500,7 +500,7 @@ def _time_weighted_average_query(parameters_dict: dict) -> str: "{% endif %}" ",boundary_events AS (SELECT coalesce(a.`{{ tagname_column }}`, b.`{{ tagname_column }}`) AS `{{ tagname_column }}`, coalesce(a.`{{ timestamp_column }}`, b.`{{ timestamp_column }}`) AS `{{ timestamp_column }}`, b.`{{ status_column }}`, b.`{{ value_column }}` FROM date_array a FULL OUTER JOIN raw_events b ON a.`{{ timestamp_column }}` = b.`{{ timestamp_column }}` AND a.`{{ tagname_column }}` = b.`{{ tagname_column }}`) " ",window_buckets AS (SELECT `{{ timestamp_column }}` AS window_start, LEAD(`{{ timestamp_column }}`) OVER (ORDER BY `{{ timestamp_column }}`) AS window_end FROM (SELECT distinct `{{ timestamp_column }}` FROM date_array) ) " - ",window_events AS (SELECT /*+ RANGE_JOIN(b, {{ range_join_seconds }} ) */ b.`{{ tagname_column }}`, b.`{{ timestamp_column }}`, a.window_start AS `WindowEventTime`, b.`{{ status_column }}`, b.`{{ value_column }}` FROM boundary_events b LEFT OUTER JOIN window_buckets a ON a.window_start <= b.`{{ timestamp_column }}` AND a.window_end > b.`{{ timestamp_column }}`) " + ",window_events AS (SELECT /*+ RANGE_JOIN(b, {{ range_join_seconds }} ) */ b.`{{ tagname_column }}`, b.`{{ timestamp_column }}`, a.window_start AS `Window{{ timestamp_column }}`, b.`{{ status_column }}`, b.`{{ value_column }}` FROM boundary_events b LEFT OUTER JOIN window_buckets a ON a.window_start <= b.`{{ timestamp_column }}` AND a.window_end > b.`{{ timestamp_column }}`) " ',fill_status AS (SELECT *, last_value(`{{ status_column }}`, true) OVER (PARTITION BY `{{ tagname_column }}` ORDER BY `{{ timestamp_column }}` ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS `Fill_{{ status_column }}`, CASE WHEN `Fill_{{ status_column }}` = "Good" THEN `{{ value_column }}` ELSE null END AS `Good_{{ value_column }}` FROM window_events) ' ",fill_value AS (SELECT *, last_value(`Good_{{ value_column }}`, true) OVER (PARTITION BY `{{ tagname_column }}` ORDER BY `{{ timestamp_column }}` ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS `Fill_{{ value_column }}` FROM fill_status) " '{% if step is defined and step == "metadata" %} '