Add snowflake telemetry. (#1209)

* Add snowflake telemetry.

* Add changelog.

* Temporary dev branch switch.

* Correct version import

* bump ci

* Temporary dev branch switch.

* Temporary dev branch switch take 2.

* Alter to meet new base schema changes.

* Fix input args.

* Change field name.

---------

Co-authored-by: Colin Rogers <111200756+colin-rogers-dbt@users.noreply.github.com>
This commit is contained in:
Mila Page
2024-10-28 14:20:45 -07:00
committed by GitHub
parent ea33cbec03
commit df643a0ed4
5 changed files with 52 additions and 2 deletions

View File

@@ -0,0 +1,6 @@
kind: Under the Hood
body: Add telemetry function
time: 2024-10-16T03:55:44.144174-07:00
custom:
Author: versusfacit
Issue: "301"

View File

@@ -4,6 +4,7 @@ from typing import Mapping, Any, Optional, List, Union, Dict, FrozenSet, Tuple,
from dbt.adapters.base.impl import AdapterConfig, ConstraintSupport
from dbt.adapters.base.meta import available
from dbt.adapters.capability import CapabilityDict, CapabilitySupport, Support, Capability
from dbt.adapters.contracts.relation import RelationConfig
from dbt.adapters.sql import SQLAdapter
from dbt.adapters.sql.impl import (
LIST_SCHEMAS_MACRO_NAME,
@@ -25,6 +26,7 @@ from dbt.adapters.snowflake.relation_configs import (
SnowflakeRelationType,
TableFormat,
)
from dbt.adapters.snowflake import SnowflakeColumn
from dbt.adapters.snowflake import SnowflakeConnectionManager
from dbt.adapters.snowflake import SnowflakeRelation
@@ -419,3 +421,18 @@ CALL {proc_name}();
def debug_query(self):
"""Override for DebugTask method"""
self.execute("select 1 as id")
@classmethod
def _get_adapter_specific_run_info(cls, config: RelationConfig) -> Dict[str, Any]:
table_format: Optional[str] = None
if (
config
and hasattr(config, "_extra")
and (relation_format := config._extra.get("table_format"))
):
table_format = relation_format
return {
"adapter_type": "snowflake",
"table_format": table_format,
}

View File

@@ -1,6 +1,6 @@
# install latest changes in dbt-core
git+https://github.com/dbt-labs/dbt-core.git#egg=dbt-core&subdirectory=core
git+https://github.com/dbt-labs/dbt-adapters.git
git+https://github.com/dbt-labs/dbt-adapters.git@ADAP-301/add-adapter-telemetry
git+https://github.com/dbt-labs/dbt-adapters.git#subdirectory=dbt-tests-adapter
git+https://github.com/dbt-labs/dbt-common.git

View File

@@ -58,7 +58,7 @@ setup(
include_package_data=True,
install_requires=[
"dbt-common>=1.10,<2.0",
"dbt-adapters>=1.7,<2.0",
"dbt-adapters @ git+https://github.com/dbt-labs/dbt-adapters.git@ADAP-301/add-adapter-telemetry",
"snowflake-connector-python[secure-local-storage]~=3.0",
# add dbt-core to ensure backwards compatibility of installation, this is not a functional dependency
"dbt-core>=1.8.0",

View File

@@ -0,0 +1,27 @@
from unittest import mock
import dbt.adapters.snowflake.__version__
from dbt.adapters.snowflake.impl import SnowflakeAdapter
from dbt.adapters.base.relation import AdapterTrackingRelationInfo
def test_telemetry_with_snowflake_details():
mock_model_config = mock.MagicMock()
mock_model_config._extra = mock.MagicMock()
mock_model_config._extra = {
"adapter_type": "snowflake",
"table_format": "iceberg",
}
res = SnowflakeAdapter.get_adapter_run_info(mock_model_config)
assert res.adapter_name == "snowflake"
assert res.base_adapter_version == dbt.adapters.__about__.version
assert res.adapter_version == dbt.adapters.snowflake.__version__.version
assert res.model_adapter_details == {
"adapter_type": "snowflake",
"table_format": "iceberg",
}
assert type(res) is AdapterTrackingRelationInfo