Skip to content

Commit fe8751b

Browse files
authored
Merge pull request #802 from elementary-data/master
Merge pull request #801 from elementary-data/release/v0.7.7
2 parents b40c6e0 + 6d2342c commit fe8751b

14 files changed

Lines changed: 518 additions & 459 deletions

File tree

Dockerfile

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,18 @@ ENV DBT_TARGET_PATH=$USR_APP_PATH/target
66
WORKDIR $USR_APP_PATH
77
RUN chmod 777 .
88

9+
RUN apt-get update \
10+
&& apt-get dist-upgrade -y \
11+
&& apt-get install -y --no-install-recommends \
12+
python-dev \
13+
libsasl2-dev \
14+
&& apt-get clean \
15+
&& rm -rf \
16+
/var/lib/apt/lists/* \
17+
/tmp/* \
18+
/var/tmp/*
19+
920
COPY . /app
10-
RUN pip install --no-cache-dir "/app[postgres, snowflake, bigquery, redshift, databricks]"
21+
RUN pip install --no-cache-dir "/app[all]"
1122

1223
ENTRYPOINT ["edr"]

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,8 @@ Check out the [contributions guide](https://docs.elementary-data.com/general/con
174174
<a href="https://github.com/vishaalkk"><img src="https://github.com/u/13641827?v=4" width="50" height="50" alt=""/></a>
175175
<a href="https://github.com/sadahry"><img src="https://github.com/u/28292300?v=4" width="50" height="50" alt=""/></a>
176176
<a href="https://github.com/will-warner"><img src="https://github.com/u/110092386?v=4" width="50" height="50" alt=""/></a>
177+
<a href="https://github.com/winzee"><img src="https://github.com/u/1001577?v=4" width="50" height="50" alt=""/></a>
178+
<a href="https://github.com/vinooganesh"><img src="https://github.com/u/2461070?v=4" width="50" height="50" alt=""/></a>
177179

178180
<!-- markdownlint-restore -->
179181
<!-- prettier-ignore-end -->

docs/_snippets/quickstart-package-install.mdx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ Make sure to copy the packages that are relevant to your dbt version.
4646
```yml packages.yml
4747
packages:
4848
- package: elementary-data/elementary
49-
version: 0.7.4
49+
version: 0.7.5
5050
## Docs: https://docs.elementary-data.com
5151
```
5252

@@ -55,7 +55,7 @@ packages:
5555
```yml packages.yml
5656
packages:
5757
- package: elementary-data/elementary
58-
version: 0.7.4
58+
version: 0.7.5
5959
## Docs: https://docs.elementary-data.com
6060

6161
## !! Important !! For dbt >=1.2.0 \<1.3.0 ##
@@ -69,7 +69,7 @@ packages:
6969
```yml packages.yml
7070
packages:
7171
- package: elementary-data/elementary
72-
version: 0.7.4
72+
version: 0.7.5
7373
## Docs: https://docs.elementary-data.com
7474

7575
## !! Important !! For dbt <1.2.0 ##

elementary/config/config.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ def __init__(
7878
os.getcwd(),
7979
)
8080
os.makedirs(os.path.abspath(self.target_dir), exist_ok=True)
81+
os.environ["DBT_LOG_PATH"] = os.path.abspath(target_path)
8182

8283
self.update_bucket_website = self._first_not_none(
8384
update_bucket_website,

elementary/monitor/data_monitoring/data_monitoring.py

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -123,17 +123,31 @@ def get_latest_invocation(self) -> Dict[str, Any]:
123123
return {}
124124

125125
@staticmethod
126-
def _check_dbt_package_compatibility(dbt_pkg_ver: str):
126+
def _check_dbt_package_compatibility(dbt_pkg_ver: str) -> None:
127127
dbt_pkg_ver = version.parse(dbt_pkg_ver)
128128
py_pkg_ver = version.parse(package.get_package_version())
129-
logger.info(
130-
f"Checking compatibility between edr ({py_pkg_ver}) and Elementary's dbt package ({dbt_pkg_ver})."
131-
)
132-
if (
133-
dbt_pkg_ver.major != py_pkg_ver.major
134-
or dbt_pkg_ver.minor != py_pkg_ver.minor
129+
if dbt_pkg_ver.major > py_pkg_ver.major or (
130+
dbt_pkg_ver.major == py_pkg_ver.major
131+
and dbt_pkg_ver.minor > py_pkg_ver.minor
132+
):
133+
logger.warning(
134+
f"You are using incompatible versions between edr ({py_pkg_ver}) and Elementary's dbt package ({dbt_pkg_ver}).\n "
135+
"To fix please run:\n"
136+
"pip install --upgrade elementary-data\n",
137+
)
138+
return
139+
140+
if dbt_pkg_ver.major < py_pkg_ver.major or (
141+
dbt_pkg_ver.major == py_pkg_ver.major
142+
and dbt_pkg_ver.minor < py_pkg_ver.minor
135143
):
136144
logger.warning(
137145
f"You are using incompatible versions between edr ({py_pkg_ver}) and Elementary's dbt package ({dbt_pkg_ver}).\n "
138-
"Please upgrade the major and minor versions to align.\n",
146+
"To fix please update your packages.yml, and run:\n"
147+
"dbt deps && dbt run --select elementary\n",
139148
)
149+
return
150+
151+
logger.info(
152+
f"edr ({py_pkg_ver}) and Elementary's dbt package ({dbt_pkg_ver}) are compatible :)"
153+
)
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{% macro get_elementary_table_nodes() %}
22
{% set table_materializations = ["table", "incremental"] %}
3-
{% set table_nodes = graph.nodes.values() | selectattr('config.materialized', 'in', table_materializations) %}
4-
{% do elementary.edr_log(tojson(table_nodes | list)) %}
3+
{% set table_nodes = graph.nodes.values() | selectattr('package_name', '==', 'elementary') | selectattr('config.materialized', 'in', table_materializations) %}
4+
{% do return(table_nodes | list) %}
55
{% endmacro %}

elementary/monitor/dbt_project/packages.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@ packages:
22
- package: dbt-labs/dbt_utils
33
version: [">=0.8.0", "<0.9.0"]
44
- package: elementary-data/elementary
5-
version: 0.7.4
5+
version: 0.7.5

elementary/monitor/dbt_project_utils.py

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,20 @@
1616
_PACKAGES_PATH = os.path.join(PATH, "dbt_packages")
1717

1818

19-
def get_elementary_package_path():
19+
def is_dbt_package_up_to_date() -> bool:
20+
installed_version = _get_installed_dbt_package_version()
21+
if installed_version is None:
22+
return False
23+
24+
required_version = _get_required_dbt_package_version()
25+
# We're using a non dbt Hub requirement, such as Git or local.
26+
if not required_version:
27+
return True
28+
29+
return installed_version == required_version
30+
31+
32+
def _get_elementary_package_path():
2033
package_path = os.path.join(_PACKAGES_PATH, _DBT_PACKAGE_NAME)
2134
if os.path.exists(package_path):
2235
return package_path
@@ -28,17 +41,8 @@ def get_elementary_package_path():
2841
return None
2942

3043

31-
def is_dbt_package_up_to_date() -> bool:
32-
installed_version = get_installed_dbt_package_version()
33-
if installed_version is None:
34-
return False
35-
36-
required_version = get_required_dbt_package_version()
37-
return installed_version == required_version
38-
39-
40-
def get_installed_dbt_package_version() -> Optional[str]:
41-
package_path = get_elementary_package_path()
44+
def _get_installed_dbt_package_version() -> Optional[str]:
45+
package_path = _get_elementary_package_path()
4246
if package_path is None:
4347
return None
4448

@@ -50,13 +54,15 @@ def get_installed_dbt_package_version() -> Optional[str]:
5054
return project_yaml_dict["version"]
5155

5256

53-
def get_required_dbt_package_version() -> Optional[str]:
57+
def _get_required_dbt_package_version() -> Optional[str]:
5458
packages_file_path = os.path.join(PATH, _PACKAGES_FILENAME)
5559
packages_yaml = OrderedYaml().load(packages_file_path)
5660

57-
for requirement in packages_yaml["packages"]:
58-
package_name = requirement["package"].split("/")[-1]
61+
for requirement in packages_yaml.get("packages", []):
62+
package_id = requirement.get("package")
63+
if not package_id:
64+
continue
65+
package_name = package_id.split("/")[-1]
5966
if package_name == _DBT_PACKAGE_NAME:
6067
return requirement["version"]
61-
6268
return None

elementary/monitor/fetchers/models/schema.py

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@ def format_generated_at(cls, generated_at):
2525

2626

2727
class ArtifactSchema(ExtendedBaseModel):
28-
name: str
29-
unique_id: str
30-
owners: List[str]
31-
tags: List[str]
32-
package_name: Optional[str]
33-
description: Optional[str]
34-
full_path: str
28+
name: Optional[str] = None
29+
unique_id: Optional[str] = None
30+
owners: Optional[List[str]] = None
31+
tags: Optional[List[str]] = None
32+
package_name: Optional[str] = None
33+
description: Optional[str] = None
34+
full_path: Optional[str] = None
3535

3636
@validator("tags", pre=True)
3737
def load_tags(cls, tags):
@@ -47,22 +47,25 @@ def format_full_path_sep(cls, full_path: str) -> str:
4747

4848

4949
class ModelSchema(ArtifactSchema):
50-
database_name: str = None
50+
database_name: Optional[str] = None
5151
schema_name: str
5252
table_name: str
53+
ref_function: str = "ref"
5354

5455

5556
class SourceSchema(ArtifactSchema):
56-
database_name: str = None
57+
database_name: Optional[str] = None
5758
schema_name: str
5859
table_name: str
60+
ref_function: str = "source"
5961

6062

6163
class ExposureSchema(ArtifactSchema):
62-
url: Optional[str]
63-
type: Optional[str]
64-
maturity: Optional[str]
65-
owner_email: Optional[str]
64+
url: Optional[str] = None
65+
type: Optional[str] = None
66+
maturity: Optional[str] = None
67+
owner_email: Optional[str] = None
68+
depends_on: Optional[List[str]] = None
6669

6770

6871
class ModelTestCoverage(ExtendedBaseModel):

elementary/operations/cli.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,12 @@ def run_operation():
3939
help="Which directory to look in for the profiles.yml file. "
4040
"If not set, edr will look in the current working directory first, then HOME/.dbt/",
4141
)
42+
@click.option(
43+
"--target-path",
44+
type=str,
45+
default=Config.DEFAULT_TARGET_PATH,
46+
help="Absolute target path for saving edr files such as logs and reports",
47+
)
4248
@click.pass_context
4349
def upload_source_freshness(ctx, **conf):
4450
"""

0 commit comments

Comments
 (0)