Skip to content

Commit

Permalink
Add snowflake telemetry. (#1209)
Browse files Browse the repository at this point in the history
* 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 <[email protected]>
  • Loading branch information
VersusFacit and colin-rogers-dbt authored Oct 28, 2024
1 parent ea33cbe commit df643a0
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 2 deletions.
6 changes: 6 additions & 0 deletions .changes/unreleased/Under the Hood-20241016-035544.yaml
Original file line number Diff line number Diff line change
@@ -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"
17 changes: 17 additions & 0 deletions dbt/adapters/snowflake/impl.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
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,
Expand All @@ -25,6 +26,7 @@
SnowflakeRelationType,
TableFormat,
)

from dbt.adapters.snowflake import SnowflakeColumn
from dbt.adapters.snowflake import SnowflakeConnectionManager
from dbt.adapters.snowflake import SnowflakeRelation
Expand Down Expand Up @@ -419,3 +421,18 @@ def valid_incremental_strategies(self):
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,
}
2 changes: 1 addition & 1 deletion dev-requirements.txt
Original file line number Diff line number Diff line change
@@ -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

Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ def _plugin_version() -> str:
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",
Expand Down
27 changes: 27 additions & 0 deletions tests/unit/test_adapter_telemetry.py
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit df643a0

Please sign in to comment.