sqlmesh.dbt.column API documentation

Edit on GitHub

# sqlmesh.dbt.column

View Source

     1from __future__ import annotations
     2
     3import typing as t
     4
     5from pydantic import validator
     6from sqlglot import exp, parse_one
     7from sqlglot.helper import ensure_list
     8
     9from sqlmesh.dbt.common import GeneralConfig
    10from sqlmesh.utils.conversions import ensure_bool
    11
    12
    13def yaml_to_columns(
    14    yaml: t.Dict[str, ColumnConfig] | t.List[t.Dict[str, ColumnConfig]]
    15) -> t.Dict[str, ColumnConfig]:
    16    columns = {}
    17    mappings: t.List[t.Dict[str, ColumnConfig]] = ensure_list(yaml)
    18    for column in mappings:
    19        config = ColumnConfig(**column)
    20        columns[config.name] = config
    21
    22    return columns
    23
    24
    25def column_types_to_sqlmesh(columns: t.Dict[str, ColumnConfig]) -> t.Dict[str, exp.DataType]:
    26    """
    27    Get the sqlmesh column types
    28
    29    Returns:
    30        A dict of column name to exp.DataType
    31    """
    32    return {
    33        name: parse_one(column.data_type, into=exp.DataType)
    34        for name, column in columns.items()
    35        if column.enabled and column.data_type
    36    }
    37
    38
    39def column_descriptions_to_sqlmesh(columns: t.Dict[str, ColumnConfig]) -> t.Dict[str, str]:
    40    """
    41    Get the sqlmesh column types
    42
    43    Returns:
    44        A dict of column name to description
    45    """
    46    return {
    47        name: column.description
    48        for name, column in columns.items()
    49        if column.enabled and column.description
    50    }
    51
    52
    53class ColumnConfig(GeneralConfig):
    54    """
    55    Column configuration for a DBT project
    56
    57    Args:
    58        name: Name of the column
    59        data_type: The column's data type
    60        description: User defined description of the column
    61        meta: Meta data associated with the column
    62        quote: Boolean flag to use quoting for the column name
    63        tests: Tests associated with this column
    64        tags: Tags associated with this column
    65    """
    66
    67    name: str
    68    data_type: t.Optional[str] = None
    69    quote: t.Optional[bool] = False
    70
    71    @validator("quote", pre=True)
    72    def _validate_bool(cls, v: str) -> bool:
    73        return ensure_bool(v)

def yaml_to_columns( yaml: Union[Dict[str, sqlmesh.dbt.column.ColumnConfig], List[Dict[str, sqlmesh.dbt.column.ColumnConfig]]]) -> Dict[str, sqlmesh.dbt.column.ColumnConfig]: View Source

    14def yaml_to_columns(
    15    yaml: t.Dict[str, ColumnConfig] | t.List[t.Dict[str, ColumnConfig]]
    16) -> t.Dict[str, ColumnConfig]:
    17    columns = {}
    18    mappings: t.List[t.Dict[str, ColumnConfig]] = ensure_list(yaml)
    19    for column in mappings:
    20        config = ColumnConfig(**column)
    21        columns[config.name] = config
    22
    23    return columns

def column_types_to_sqlmesh( columns: Dict[str, sqlmesh.dbt.column.ColumnConfig]) -> Dict[str, sqlglot.expressions.DataType]: View Source

    26def column_types_to_sqlmesh(columns: t.Dict[str, ColumnConfig]) -> t.Dict[str, exp.DataType]:
    27    """
    28    Get the sqlmesh column types
    29
    30    Returns:
    31        A dict of column name to exp.DataType
    32    """
    33    return {
    34        name: parse_one(column.data_type, into=exp.DataType)
    35        for name, column in columns.items()
    36        if column.enabled and column.data_type
    37    }

Get the sqlmesh column types

###### Returns:

> A dict of column name to exp.DataType

def column_descriptions_to_sqlmesh(columns: Dict[str, sqlmesh.dbt.column.ColumnConfig]) -> Dict[str, str]: View Source

    40def column_descriptions_to_sqlmesh(columns: t.Dict[str, ColumnConfig]) -> t.Dict[str, str]:
    41    """
    42    Get the sqlmesh column types
    43
    44    Returns:
    45        A dict of column name to description
    46    """
    47    return {
    48        name: column.description
    49        for name, column in columns.items()
    50        if column.enabled and column.description
    51    }

Get the sqlmesh column types

###### Returns:

> A dict of column name to description

class ColumnConfig(sqlmesh.dbt.common.GeneralConfig): View Source

    54class ColumnConfig(GeneralConfig):
    55    """
    56    Column configuration for a DBT project
    57
    58    Args:
    59        name: Name of the column
    60        data_type: The column's data type
    61        description: User defined description of the column
    62        meta: Meta data associated with the column
    63        quote: Boolean flag to use quoting for the column name
    64        tests: Tests associated with this column
    65        tags: Tags associated with this column
    66    """
    67
    68    name: str
    69    data_type: t.Optional[str] = None
    70    quote: t.Optional[bool] = False
    71
    72    @validator("quote", pre=True)
    73    def _validate_bool(cls, v: str) -> bool:
    74        return ensure_bool(v)

Column configuration for a DBT project

###### Arguments:

- name: Name of the column
- data_type: The column's data type
- description: User defined description of the column
- meta: Meta data associated with the column
- quote: Boolean flag to use quoting for the column name
- tests: Tests associated with this column
- tags: Tags associated with this column

##### Inherited Members

pydantic.main.BaseModel
  BaseModel
  parse_obj
  parse_raw
  parse_file
  from_orm
  construct
  copy
  schema
  schema_json
  validate
  update_forward_refs
sqlmesh.dbt.common.GeneralConfig
  replace
  render_config
sqlmesh.dbt.common.DbtConfig
  Config
sqlmesh.core.config.base.BaseConfig
  update_with
sqlmesh.utils.pydantic.PydanticModel
  dict
  json
  missing_required_fields
  extra_fields
  all_fields
  required_fields