Skip to content

Api reference

components.customer_profiling.public.blueprint

customer_profiling module-attribute

customer_profiling = CustomBlueprint(
    "customer_profiling",
    __name__,
    cli_group="customer_profiling",
)

components.customer_profiling.public.dataclasses

AbstractMetrics dataclass

AbstractMetrics()

from_customer_profiling_query_response classmethod

from_customer_profiling_query_response(response)
Source code in components/customer_profiling/public/dataclasses.py
@classmethod
def from_customer_profiling_query_response(  # type: ignore[no-untyped-def]  # noqa: D102
    cls,
    response: QueryResponse,  # type: ignore[type-arg]
):
    resp_attributes = response.meta.to_dict()
    resp_metrics = {
        metric.metric_name: metric.metric_value for metric in response.metrics
    }
    data = {**resp_attributes, **resp_metrics}
    mapped_data = cls._map_customer_profiling_namings_to_local_namings(data)

    filtered_data = {
        metric_name: value
        for metric_name, value in mapped_data.items()
        if metric_name in cls.__annotations__.keys() and value is not None
    }  # ensure we don't pass unsupported metrics to the class

    return cls(**filtered_data)

retrievable_metrics classmethod

retrievable_metrics()
Source code in components/customer_profiling/public/dataclasses.py
@classmethod
def retrievable_metrics(cls):  # type: ignore[no-untyped-def]  # noqa: D102
    local_namings = cls.__annotations__.keys()
    mapping = {
        local_name: customer_profiling_name
        for customer_profiling_name, local_name in cls._customer_profiling_mapping().items()
    }

    return [
        mapping[local_name] if local_name in mapping else local_name
        for local_name in local_namings
    ]

AccountMeta dataclass

AccountMeta(
    account_id,
    account_name,
    sub_industry,
    franchise_name,
    account_size,
    is_key_account,
    min_start_date,
    max_end_date,
    am_level,
    is_unmanaged_key_account,
    is_eligible_for_kam_escalation,
    salesforce_owner_name,
    churn_risk_score,
    churn_segment_category,
    main_churn_risk_reason,
    is_dormant,
    has_companies_in_bankruptcy,
    bankruptcy_types,
    has_companies_in_liquidation,
    is_eligible_to_account_level_loss_ratio,
    has_enough_care_events_privacy,
    value_segment,
    is_eligible_to_evin_report,
    account_has_dsn_billing,
)

Bases: DataClassJsonMixin

account_has_dsn_billing instance-attribute

account_has_dsn_billing

account_id instance-attribute

account_id

account_name instance-attribute

account_name

account_size instance-attribute

account_size

am_level instance-attribute

am_level

bankruptcy_types instance-attribute

bankruptcy_types

churn_risk_score instance-attribute

churn_risk_score

churn_segment_category instance-attribute

churn_segment_category

franchise_name instance-attribute

franchise_name

has_companies_in_bankruptcy instance-attribute

has_companies_in_bankruptcy

has_companies_in_liquidation instance-attribute

has_companies_in_liquidation

has_enough_care_events_privacy instance-attribute

has_enough_care_events_privacy

is_dormant instance-attribute

is_dormant

is_eligible_for_kam_escalation instance-attribute

is_eligible_for_kam_escalation

is_eligible_to_account_level_loss_ratio instance-attribute

is_eligible_to_account_level_loss_ratio

is_eligible_to_evin_report instance-attribute

is_eligible_to_evin_report

is_key_account instance-attribute

is_key_account

is_unmanaged_key_account instance-attribute

is_unmanaged_key_account

main_churn_risk_reason instance-attribute

main_churn_risk_reason

max_end_date instance-attribute

max_end_date

min_start_date instance-attribute

min_start_date

salesforce_owner_name instance-attribute

salesforce_owner_name

sub_industry instance-attribute

sub_industry

value_segment instance-attribute

value_segment

CompanyMeta dataclass

CompanyMeta(
    company_id,
    company_name,
    account_id,
    account_name,
    company_size,
    ccn_code,
    ape_code,
    creation_date,
    is_dormant,
    is_in_bankruptcy,
    bankruptcy_types,
    is_in_liquidation,
)

Bases: DataClassJsonMixin

account_id instance-attribute

account_id

account_name instance-attribute

account_name

ape_code instance-attribute

ape_code

bankruptcy_types instance-attribute

bankruptcy_types

ccn_code instance-attribute

ccn_code

company_id instance-attribute

company_id

company_name instance-attribute

company_name

company_size instance-attribute

company_size

creation_date instance-attribute

creation_date

is_dormant instance-attribute

is_dormant

is_in_bankruptcy instance-attribute

is_in_bankruptcy

is_in_liquidation instance-attribute

is_in_liquidation

ContractMeta dataclass

ContractMeta(
    contract_id, account_id, company_id, contract_size
)

Bases: DataClassJsonMixin

account_id instance-attribute

account_id

company_id instance-attribute

company_id

contract_id instance-attribute

contract_id

contract_size instance-attribute

contract_size

IndustryMeta dataclass

IndustryMeta()

Bases: DataClassJsonMixin

M module-attribute

M = TypeVar('M')

MetricRow dataclass

MetricRow(
    metric_name,
    metric_value,
    metric_unit,
    effective_date,
    metric_value_formatted,
)

Bases: DataClassJsonMixin

effective_date instance-attribute

effective_date

metric_name instance-attribute

metric_name

metric_unit instance-attribute

metric_unit

metric_value instance-attribute

metric_value

metric_value_formatted instance-attribute

metric_value_formatted

QueryResponse dataclass

QueryResponse(meta, metrics)

Bases: Generic[M], DataClassJsonMixin

meta instance-attribute

meta

metrics instance-attribute

metrics

components.customer_profiling.public.enums

AggregationLevel

Bases: AlanBaseEnum

account class-attribute instance-attribute

account = 'account'

company class-attribute instance-attribute

company = 'company'

contract class-attribute instance-attribute

contract = 'contract'

industry class-attribute instance-attribute

industry = 'industry'

DataSource

Bases: AlanBaseEnum

backend class-attribute instance-attribute

backend = 'backend'

turing class-attribute instance-attribute

turing = 'turing'

MetricUnit

Bases: AlanBaseEnum

cents class-attribute instance-attribute

cents = 'cents'

euros class-attribute instance-attribute

euros = 'euros'

float class-attribute instance-attribute

float = 'float'

integer class-attribute instance-attribute

integer = 'integer'

minutes class-attribute instance-attribute

minutes = 'minutes'

ratio class-attribute instance-attribute

ratio = 'ratio'

components.customer_profiling.public.models

components.customer_profiling.public.queries

factory

QueryBuilder

query staticmethod
query(aggregation_level)
Source code in components/customer_profiling/public/queries/factory.py
@staticmethod
@customer_profiling_tracer_wrap()
def query(aggregation_level: AggregationLevel) -> QueryBuilderBase:  # type: ignore[type-arg]  # noqa: D102
    builder_class = {
        AggregationLevel.account: AccountQueryBuilder,
        AggregationLevel.company: CompanyQueryBuilder,
        AggregationLevel.contract: ContractQueryBuilder,
        AggregationLevel.industry: IndustryQueryBuilder,
    }.get(aggregation_level)

    if not builder_class:
        raise ValueError(f"Unknown aggregation level: {aggregation_level}")
    return builder_class()  # type: ignore[return-value]