# coding=utf-8
# --------------------------------------------------------------------------
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is
# regenerated.
# --------------------------------------------------------------------------

from msrest.serialization import Model


class AttributeDataProfile(Model):
    """AttributeDataProfile.

    Variables are only populated by the server, and will be ignored when
    sending a request.

    :param value_counts: Gets or sets the distribution of the top 100 values
    :type value_counts:
     list[~microsoft.dynamics.customerinsights.api.models.ValueCount]
    :param histogram: Gets or sets the histogram information. Ordered from
     smallest to largest bin.
    :type histogram:
     list[~microsoft.dynamics.customerinsights.api.models.HistogramBin]
    :param string_length_counts: Gets or sets the string lengths and the count
     of string values with those lengths.
    :type string_length_counts:
     list[~microsoft.dynamics.customerinsights.api.models.StringLengthCount]
    :param qualified_entity_name: Gets or sets the qualified entity name
    :type qualified_entity_name: str
    :param attribute_name: Gets or sets the attribute name.
    :type attribute_name: str
    :param min: Gets or sets the minimum value.
    :type min: object
    :param max: Gets or sets the maximum value.
    :type max: object
    :param count: Gets or sets the total row count.
    :type count: long
    :param missing_count: Gets or sets the row count of missing values.
    :type missing_count: long
    :param error_count: Gets or sets the number of error values.
    :type error_count: long
    :param quantiles:
    :type quantiles: ~microsoft.dynamics.customerinsights.api.models.Quantiles
    :param moments:
    :type moments: ~microsoft.dynamics.customerinsights.api.models.Moments
    :param unique_value_count: Gets or sets the number of unique values.
    :type unique_value_count: long
    :param profiling_date: Gets or sets the profiling date
    :type profiling_date: datetime
    :ivar is_suggested_primary_key: Gets a value indicating whether this
     attribute can be used as a primary key of the entity
    :vartype is_suggested_primary_key: bool
    """

    _validation = {
        'is_suggested_primary_key': {'readonly': True},
    }

    _attribute_map = {
        'value_counts': {'key': 'valueCounts', 'type': '[ValueCount]'},
        'histogram': {'key': 'histogram', 'type': '[HistogramBin]'},
        'string_length_counts': {'key': 'stringLengthCounts', 'type': '[StringLengthCount]'},
        'qualified_entity_name': {'key': 'qualifiedEntityName', 'type': 'str'},
        'attribute_name': {'key': 'attributeName', 'type': 'str'},
        'min': {'key': 'min', 'type': 'object'},
        'max': {'key': 'max', 'type': 'object'},
        'count': {'key': 'count', 'type': 'long'},
        'missing_count': {'key': 'missingCount', 'type': 'long'},
        'error_count': {'key': 'errorCount', 'type': 'long'},
        'quantiles': {'key': 'quantiles', 'type': 'Quantiles'},
        'moments': {'key': 'moments', 'type': 'Moments'},
        'unique_value_count': {'key': 'uniqueValueCount', 'type': 'long'},
        'profiling_date': {'key': 'profilingDate', 'type': 'iso-8601'},
        'is_suggested_primary_key': {'key': 'isSuggestedPrimaryKey', 'type': 'bool'},
    }

    def __init__(self, *, value_counts=None, histogram=None, string_length_counts=None, qualified_entity_name: str=None, attribute_name: str=None, min=None, max=None, count: int=None, missing_count: int=None, error_count: int=None, quantiles=None, moments=None, unique_value_count: int=None, profiling_date=None, **kwargs) -> None:
        super(AttributeDataProfile, self).__init__(**kwargs)
        self.value_counts = value_counts
        self.histogram = histogram
        self.string_length_counts = string_length_counts
        self.qualified_entity_name = qualified_entity_name
        self.attribute_name = attribute_name
        self.min = min
        self.max = max
        self.count = count
        self.missing_count = missing_count
        self.error_count = error_count
        self.quantiles = quantiles
        self.moments = moments
        self.unique_value_count = unique_value_count
        self.profiling_date = profiling_date
        self.is_suggested_primary_key = None
