Repository: great-expectations/great_expectations

Issue:
Use cleaner solution for non-truncating division in python 2
Prefer `from __future__ import division` to `1.*x/y`


Discussion:
Done inline during improve_partitions push.

Resolving patch:
diff --git a/great_expectations/rule_based_profiler/data_assistant/data_assistant.py b/great_expectations/rule_based_profiler/data_assistant/data_assistant.py
--- a/great_expectations/rule_based_profiler/data_assistant/data_assistant.py
+++ b/great_expectations/rule_based_profiler/data_assistant/data_assistant.py
@@ -23,6 +23,7 @@
 from great_expectations.rule_based_profiler.parameter_builder import (
     MeanUnexpectedMapMetricMultiBatchParameterBuilder,
     MetricMultiBatchParameterBuilder,
+    NumericMetricRangeMultiBatchParameterBuilder,
     ParameterBuilder,
 )
 from great_expectations.rule_based_profiler.rule import Rule
@@ -33,6 +34,7 @@
 from great_expectations.rule_based_profiler.types import (
     DOMAIN_KWARGS_PARAMETER_FULLY_QUALIFIED_NAME,
     FULLY_QUALIFIED_PARAMETER_NAME_METADATA_KEY,
+    FULLY_QUALIFIED_PARAMETER_NAME_SEPARATOR_CHARACTER,
     FULLY_QUALIFIED_PARAMETER_NAME_VALUE_KEY,
     VARIABLES_KEY,
     Domain,
@@ -165,7 +167,7 @@ def get_column_values_null_unexpected_count_metric_multi_batch_parameter_builder
                 json_serialize=json_serialize,
             )
 
-        def get_column_min_metric_multi_batch_parameter_builder(
+        def get_column_histogram_metric_multi_batch_parameter_builder(
             self,
             json_serialize: Union[str, bool] = True,
         ) -> ParameterBuilder:
@@ -173,12 +175,14 @@ def get_column_min_metric_multi_batch_parameter_builder(
             This method instantiates one commonly used "MetricMultiBatchParameterBuilder" with specified directives.
             """
             return self.build_metric_multi_batch_parameter_builder(
-                metric_name="column.min",
-                metric_value_kwargs=None,
+                metric_name="column.histogram",
+                metric_value_kwargs={
+                    "bins": f"{VARIABLES_KEY}bins",
+                },
                 json_serialize=json_serialize,
             )
 
-        def get_column_max_metric_multi_batch_parameter_builder(
+        def get_column_quantile_values_metric_multi_batch_parameter_builder(
             self,
             json_serialize: Union[str, bool] = True,
         ) -> ParameterBuilder:
@@ -186,12 +190,28 @@ def get_column_max_metric_multi_batch_parameter_builder(
             This method instantiates one commonly used "MetricMultiBatchParameterBuilder" with specified directives.
             """
             return self.build_metric_multi_batch_parameter_builder(
-                metric_name="column.max",
+                metric_name="column.quantile_values",
+                metric_value_kwargs={
+                    "quantiles": f"{VARIABLES_KEY}quantiles",
+                    "allow_relative_error": f"{VARIABLES_KEY}allow_relative_error",
+                },
+                json_serialize=json_serialize,
+            )
+
+        def get_column_min_metric_multi_batch_parameter_builder(
+            self,
+            json_serialize: Union[str, bool] = True,
+        ) -> ParameterBuilder:
+            """
+            This method instantiates one commonly used "MetricMultiBatchParameterBuilder" with specified directives.
+            """
+            return self.build_metric_multi_batch_parameter_builder(
+                metric_name="column.min",
                 metric_value_kwargs=None,
                 json_serialize=json_serialize,
             )
 
-        def get_column_mean_metric_multi_batch_parameter_builder(
+        def get_column_max_metric_multi_batch_parameter_builder(
             self,
             json_serialize: Union[str, bool] = True,
         ) -> ParameterBuilder:
@@ -199,7 +219,7 @@ def get_column_mean_metric_multi_batch_parameter_builder(
             This method instantiates one commonly used "MetricMultiBatchParameterBuilder" with specified directives.
             """
             return self.build_metric_multi_batch_parameter_builder(
-                metric_name="column.mean",
+                metric_name="column.max",
                 metric_value_kwargs=None,
                 json_serialize=json_serialize,
             )
@@ -217,7 +237,7 @@ def get_column_median_metric_multi_batch_parameter_builder(
                 json_serialize=json_serialize,
             )
 
-        def get_column_standard_deviation_metric_multi_batch_parameter_builder(
+        def get_column_mean_metric_multi_batch_parameter_builder(
             self,
             json_serialize: Union[str, bool] = True,
         ) -> ParameterBuilder:
@@ -225,12 +245,12 @@ def get_column_standard_deviation_metric_multi_batch_parameter_builder(
             This method instantiates one commonly used "MetricMultiBatchParameterBuilder" with specified directives.
             """
             return self.build_metric_multi_batch_parameter_builder(
-                metric_name="column.standard_deviation",
+                metric_name="column.mean",
                 metric_value_kwargs=None,
                 json_serialize=json_serialize,
             )
 
-        def get_column_quantile_values_metric_multi_batch_parameter_builder(
+        def get_column_standard_deviation_metric_multi_batch_parameter_builder(
             self,
             json_serialize: Union[str, bool] = True,
         ) -> ParameterBuilder:
@@ -238,11 +258,8 @@ def get_column_quantile_values_metric_multi_batch_parameter_builder(
             This method instantiates one commonly used "MetricMultiBatchParameterBuilder" with specified directives.
             """
             return self.build_metric_multi_batch_parameter_builder(
-                metric_name="column.quantile_values",
-                metric_value_kwargs={
-                    "quantiles": f"{VARIABLES_KEY}quantiles",
-                    "allow_relative_error": f"{VARIABLES_KEY}allow_relative_error",
-                },
+                metric_name="column.standard_deviation",
+                metric_value_kwargs=None,
                 json_serialize=json_serialize,
             )
 
@@ -268,6 +285,35 @@ def build_metric_multi_batch_parameter_builder(
                 data_context=None,
             )
 
+        @staticmethod
+        def build_numeric_metric_range_multi_batch_parameter_builder(
+            metric_name: str,
+            metric_value_kwargs: Optional[Union[str, dict]] = None,
+            json_serialize: Union[str, bool] = True,
+        ) -> NumericMetricRangeMultiBatchParameterBuilder:
+            """
+            This method instantiates "MetricMultiBatchParameterBuilder" class with specific arguments for given purpose.
+            """
+            return NumericMetricRangeMultiBatchParameterBuilder(
+                name=f"{metric_name}.range",
+                metric_name=metric_name,
+                metric_domain_kwargs=DOMAIN_KWARGS_PARAMETER_FULLY_QUALIFIED_NAME,
+                metric_value_kwargs=metric_value_kwargs,
+                enforce_numeric_metric=True,
+                replace_nan_with_zero=True,
+                reduce_scalar_metric=True,
+                false_positive_rate=f"{VARIABLES_KEY}false_positive_rate",
+                quantile_statistic_interpolation_method=f"{VARIABLES_KEY}quantile_statistic_interpolation_method",
+                estimator=f"{VARIABLES_KEY}estimator",
+                n_resamples=f"{VARIABLES_KEY}n_resamples",
+                random_seed=f"{VARIABLES_KEY}random_seed",
+                include_estimator_samples_histogram_in_details=f"{VARIABLES_KEY}include_estimator_samples_histogram_in_details",
+                truncate_values=f"{VARIABLES_KEY}truncate_values",
+                round_decimals=f"{VARIABLES_KEY}round_decimals",
+                evaluation_parameter_builder_configs=None,
+                json_serialize=json_serialize,
+            )
+
     COMMONLY_USED_PARAMETER_BUILDERS: CommonlyUsedParameterBuilders = (
         CommonlyUsedParameterBuilders()
     )
@@ -708,6 +754,9 @@ def build_map_metric_rule(
     """
     This method builds "Rule" object focused on emitting "ExpectationConfiguration" objects for any "map" style metric.
     """
+
+    # Step-1: Instantiate "MapMetricColumnDomainBuilder" for specified "map_metric_name" (subject to directives).
+
     map_metric_column_domain_builder: MapMetricColumnDomainBuilder = (
         MapMetricColumnDomainBuilder(
             map_metric_name=map_metric_name,
@@ -725,26 +774,40 @@ def build_map_metric_rule(
             data_context=None,
         )
     )
-    total_count_metric_multi_batch_parameter_builder: ParameterBuilder = DataAssistant.COMMONLY_USED_PARAMETER_BUILDERS.get_table_row_count_metric_multi_batch_parameter_builder(
+
+    # Step-2: Declare "ParameterBuilder" for every metric of interest.
+
+    column_values_unique_unexpected_count_metric_multi_batch_parameter_builder_for_metrics: ParameterBuilder = DataAssistant.COMMONLY_USED_PARAMETER_BUILDERS.get_column_values_unique_unexpected_count_metric_multi_batch_parameter_builder(
+        json_serialize=True
+    )
+    column_values_nonnull_unexpected_count_metric_multi_batch_parameter_builder_for_metrics: ParameterBuilder = DataAssistant.COMMONLY_USED_PARAMETER_BUILDERS.get_column_values_nonnull_unexpected_count_metric_multi_batch_parameter_builder(
+        json_serialize=True
+    )
+    column_values_null_unexpected_count_metric_multi_batch_parameter_builder_for_metrics: ParameterBuilder = DataAssistant.COMMONLY_USED_PARAMETER_BUILDERS.get_column_values_null_unexpected_count_metric_multi_batch_parameter_builder(
+        json_serialize=True
+    )
+
+    # Step-3: Set up "MeanUnexpectedMapMetricMultiBatchParameterBuilder" to compute "condition" for emitting "ExpectationConfiguration" (based on "Domain" data).
+
+    total_count_metric_multi_batch_parameter_builder_for_evaluations: ParameterBuilder = DataAssistant.COMMONLY_USED_PARAMETER_BUILDERS.get_table_row_count_metric_multi_batch_parameter_builder(
         json_serialize=False
     )
-    column_values_nonnull_unexpected_count_metric_multi_batch_parameter_builder: ParameterBuilder = DataAssistant.COMMONLY_USED_PARAMETER_BUILDERS.get_column_values_nonnull_unexpected_count_metric_multi_batch_parameter_builder(
+    column_values_nonnull_unexpected_count_metric_multi_batch_parameter_builder_for_evaluations: ParameterBuilder = DataAssistant.COMMONLY_USED_PARAMETER_BUILDERS.get_column_values_nonnull_unexpected_count_metric_multi_batch_parameter_builder(
         json_serialize=False
     )
-
     evaluation_parameter_builder_configs: Optional[List[ParameterBuilderConfig]] = [
         ParameterBuilderConfig(
-            **total_count_metric_multi_batch_parameter_builder.to_json_dict()
+            **total_count_metric_multi_batch_parameter_builder_for_evaluations.to_json_dict()
         ),
         ParameterBuilderConfig(
-            **column_values_nonnull_unexpected_count_metric_multi_batch_parameter_builder.to_json_dict()
+            **column_values_nonnull_unexpected_count_metric_multi_batch_parameter_builder_for_evaluations.to_json_dict()
         ),
     ]
-    column_values_unique_mean_unexpected_value_multi_batch_parameter_builder: MeanUnexpectedMapMetricMultiBatchParameterBuilder = MeanUnexpectedMapMetricMultiBatchParameterBuilder(
+    column_values_attribute_mean_unexpected_value_multi_batch_parameter_builder_for_validations: MeanUnexpectedMapMetricMultiBatchParameterBuilder = MeanUnexpectedMapMetricMultiBatchParameterBuilder(
         name=f"{map_metric_name}.unexpected_value",
         map_metric_name=map_metric_name,
-        total_count_parameter_builder_name=total_count_metric_multi_batch_parameter_builder.name,
-        null_count_parameter_builder_name=column_values_nonnull_unexpected_count_metric_multi_batch_parameter_builder.name,
+        total_count_parameter_builder_name=total_count_metric_multi_batch_parameter_builder_for_evaluations.name,
+        null_count_parameter_builder_name=column_values_nonnull_unexpected_count_metric_multi_batch_parameter_builder_for_evaluations.name,
         metric_domain_kwargs=DOMAIN_KWARGS_PARAMETER_FULLY_QUALIFIED_NAME,
         metric_value_kwargs=None,
         evaluation_parameter_builder_configs=evaluation_parameter_builder_configs,
@@ -752,24 +815,33 @@ def build_map_metric_rule(
         data_context=None,
     )
 
+    # Step-4: Pass "MeanUnexpectedMapMetricMultiBatchParameterBuilder" as "validation" "ParameterBuilder" for "DefaultExpectationConfigurationBuilder", responsible for emitting "ExpectationConfiguration" (with specified "expectation_type").
+
     validation_parameter_builder_configs: Optional[List[ParameterBuilderConfig]] = [
         ParameterBuilderConfig(
-            **column_values_unique_mean_unexpected_value_multi_batch_parameter_builder.to_json_dict()
+            **column_values_attribute_mean_unexpected_value_multi_batch_parameter_builder_for_validations.to_json_dict()
         ),
     ]
-    max_column_values_unique_mean_unexpected_value_ratio: float = 1.0e-2
-    expect_column_values_to_be_unique_expectation_configuration_builder: DefaultExpectationConfigurationBuilder = DefaultExpectationConfigurationBuilder(
+    max_column_attribute_metric_mean_unexpected_value_ratio: float = 1.0e-2
+    expect_column_values_to_be_attribute_expectation_configuration_builder: DefaultExpectationConfigurationBuilder = DefaultExpectationConfigurationBuilder(
         expectation_type=expectation_type,
-        condition=f"{column_values_unique_mean_unexpected_value_multi_batch_parameter_builder.fully_qualified_parameter_name}.{FULLY_QUALIFIED_PARAMETER_NAME_VALUE_KEY} <= {max_column_values_unique_mean_unexpected_value_ratio}",
         validation_parameter_builder_configs=validation_parameter_builder_configs,
+        column=f"{DOMAIN_KWARGS_PARAMETER_FULLY_QUALIFIED_NAME}{FULLY_QUALIFIED_PARAMETER_NAME_SEPARATOR_CHARACTER}column",
+        condition=f"{column_values_attribute_mean_unexpected_value_multi_batch_parameter_builder_for_validations.fully_qualified_parameter_name}{FULLY_QUALIFIED_PARAMETER_NAME_SEPARATOR_CHARACTER}{FULLY_QUALIFIED_PARAMETER_NAME_VALUE_KEY} <= {max_column_attribute_metric_mean_unexpected_value_ratio}",
         meta={
-            "profiler_details": f"{column_values_unique_mean_unexpected_value_multi_batch_parameter_builder.fully_qualified_parameter_name}.{FULLY_QUALIFIED_PARAMETER_NAME_METADATA_KEY}",
+            "profiler_details": f"{column_values_attribute_mean_unexpected_value_multi_batch_parameter_builder_for_validations.fully_qualified_parameter_name}.{FULLY_QUALIFIED_PARAMETER_NAME_METADATA_KEY}",
         },
     )
 
-    parameter_builders = []
+    # Step-5: Instantiate and return "Rule" object, comprised of "variables", "domain_builder", "parameter_builders", and "expectation_configuration_builders" components.
+
+    parameter_builders: List[ParameterBuilder] = [
+        column_values_unique_unexpected_count_metric_multi_batch_parameter_builder_for_metrics,
+        column_values_nonnull_unexpected_count_metric_multi_batch_parameter_builder_for_metrics,
+        column_values_null_unexpected_count_metric_multi_batch_parameter_builder_for_metrics,
+    ]
     expectation_configuration_builders: List[ExpectationConfigurationBuilder] = [
-        expect_column_values_to_be_unique_expectation_configuration_builder,
+        expect_column_values_to_be_attribute_expectation_configuration_builder,
     ]
     rule: Rule = Rule(
         name=rule_name,
diff --git a/great_expectations/rule_based_profiler/data_assistant/onboarding_data_assistant.py b/great_expectations/rule_based_profiler/data_assistant/onboarding_data_assistant.py
--- a/great_expectations/rule_based_profiler/data_assistant/onboarding_data_assistant.py
+++ b/great_expectations/rule_based_profiler/data_assistant/onboarding_data_assistant.py
@@ -1,13 +1,27 @@
 from typing import Any, Dict, List, Optional
 
 from great_expectations.execution_engine.execution_engine import MetricDomainTypes
+from great_expectations.rule_based_profiler.config import ParameterBuilderConfig
 from great_expectations.rule_based_profiler.data_assistant import DataAssistant
 from great_expectations.rule_based_profiler.data_assistant.data_assistant import (
     build_map_metric_rule,
 )
+from great_expectations.rule_based_profiler.domain_builder import ColumnDomainBuilder
+from great_expectations.rule_based_profiler.expectation_configuration_builder import (
+    DefaultExpectationConfigurationBuilder,
+    ExpectationConfigurationBuilder,
+)
 from great_expectations.rule_based_profiler.parameter_builder import ParameterBuilder
 from great_expectations.rule_based_profiler.rule import Rule
-from great_expectations.rule_based_profiler.types import Domain
+from great_expectations.rule_based_profiler.types import (
+    DOMAIN_KWARGS_PARAMETER_FULLY_QUALIFIED_NAME,
+    FULLY_QUALIFIED_PARAMETER_NAME_METADATA_KEY,
+    FULLY_QUALIFIED_PARAMETER_NAME_SEPARATOR_CHARACTER,
+    FULLY_QUALIFIED_PARAMETER_NAME_VALUE_KEY,
+    VARIABLES_KEY,
+    Domain,
+    SemanticDomainTypes,
+)
 from great_expectations.rule_based_profiler.types.data_assistant_result import (
     DataAssistantResult,
     OnboardingDataAssistantResult,
@@ -48,25 +62,10 @@ def metrics_parameter_builders_by_domain(
         table_row_count_metric_multi_batch_parameter_builder: ParameterBuilder = DataAssistant.COMMONLY_USED_PARAMETER_BUILDERS.get_table_row_count_metric_multi_batch_parameter_builder(
             json_serialize=True
         )
-        column_values_unique_unexpected_count_metric_multi_batch_parameter_builder: ParameterBuilder = DataAssistant.COMMONLY_USED_PARAMETER_BUILDERS.get_column_values_unique_unexpected_count_metric_multi_batch_parameter_builder(
-            json_serialize=True
-        )
-        column_values_nonnull_unexpected_count_metric_multi_batch_parameter_builder: ParameterBuilder = DataAssistant.COMMONLY_USED_PARAMETER_BUILDERS.get_column_values_nonnull_unexpected_count_metric_multi_batch_parameter_builder(
-            json_serialize=True
-        )
-        column_values_null_unexpected_count_metric_multi_batch_parameter_builder: ParameterBuilder = DataAssistant.COMMONLY_USED_PARAMETER_BUILDERS.get_column_values_null_unexpected_count_metric_multi_batch_parameter_builder(
-            json_serialize=True
-        )
-
         return {
             Domain(domain_type=MetricDomainTypes.TABLE,): [
                 table_row_count_metric_multi_batch_parameter_builder,
             ],
-            Domain(domain_type=MetricDomainTypes.COLUMN,): [
-                column_values_unique_unexpected_count_metric_multi_batch_parameter_builder,
-                column_values_nonnull_unexpected_count_metric_multi_batch_parameter_builder,
-                column_values_null_unexpected_count_metric_multi_batch_parameter_builder,
-            ],
         }
 
     @property
@@ -123,11 +122,13 @@ def rules(self) -> Optional[List[Rule]]:
             max_unexpected_ratio=None,
             min_max_unexpected_values_proportion=9.75e-1,
         )
+        numeric_rule: Rule = self._build_numeric_rule()
 
         return [
             column_value_uniqueness_rule,
             column_value_nullity_rule,
             column_value_nonnullity_rule,
+            numeric_rule,
         ]
 
     def _build_data_assistant_result(
@@ -141,3 +142,280 @@ def _build_data_assistant_result(
             citation=data_assistant_result.citation,
             execution_time=data_assistant_result.execution_time,
         )
+
+    @staticmethod
+    def _build_numeric_rule() -> Rule:
+        """
+        This method builds "Rule" object focused on emitting "ExpectationConfiguration" objects for numerical columns.
+        """
+
+        # Step-1: Instantiate "ColumnDomainBuilder" for selecting numeric columns (but not "ID-type" columns).
+
+        numeric_column_type_domain_builder: ColumnDomainBuilder = ColumnDomainBuilder(
+            include_column_names=None,
+            exclude_column_names=None,
+            include_column_name_suffixes=None,
+            exclude_column_name_suffixes=[
+                "_id",
+            ],
+            semantic_type_filter_module_name=None,
+            semantic_type_filter_class_name=None,
+            include_semantic_types=[
+                SemanticDomainTypes.NUMERIC,
+            ],
+            exclude_semantic_types=[
+                SemanticDomainTypes.IDENTIFIER,
+            ],
+            data_context=None,
+        )
+
+        # Step-2: Declare "ParameterBuilder" for every metric of interest.
+
+        column_histogram_metric_multi_batch_parameter_builder_for_metrics: ParameterBuilder = DataAssistant.COMMONLY_USED_PARAMETER_BUILDERS.get_column_histogram_metric_multi_batch_parameter_builder(
+            json_serialize=True
+        )
+        column_column_quantile_values_metric_multi_batch_parameter_builder_for_metrics: ParameterBuilder = DataAssistant.COMMONLY_USED_PARAMETER_BUILDERS.get_column_quantile_values_metric_multi_batch_parameter_builder(
+            json_serialize=True
+        )
+        column_min_metric_multi_batch_parameter_builder_for_metrics: ParameterBuilder = DataAssistant.COMMONLY_USED_PARAMETER_BUILDERS.get_column_min_metric_multi_batch_parameter_builder(
+            json_serialize=True
+        )
+        column_max_metric_multi_batch_parameter_builder_for_metrics: ParameterBuilder = DataAssistant.COMMONLY_USED_PARAMETER_BUILDERS.get_column_max_metric_multi_batch_parameter_builder(
+            json_serialize=True
+        )
+        column_median_metric_multi_batch_parameter_builder_for_metrics: ParameterBuilder = DataAssistant.COMMONLY_USED_PARAMETER_BUILDERS.get_column_median_metric_multi_batch_parameter_builder(
+            json_serialize=True
+        )
+        column_mean_metric_multi_batch_parameter_builder_for_metrics: ParameterBuilder = DataAssistant.COMMONLY_USED_PARAMETER_BUILDERS.get_column_mean_metric_multi_batch_parameter_builder(
+            json_serialize=True
+        )
+        column_standard_deviation_metric_multi_batch_parameter_builder_for_metrics: ParameterBuilder = DataAssistant.COMMONLY_USED_PARAMETER_BUILDERS.get_column_standard_deviation_metric_multi_batch_parameter_builder(
+            json_serialize=True
+        )
+
+        # Step-3: Declare "ParameterBuilder" for every "validation" need "ExpectationConfigurationBuilder" objects.
+
+        column_min_values_range_parameter_builder_for_validations: ParameterBuilder = DataAssistant.COMMONLY_USED_PARAMETER_BUILDERS.build_numeric_metric_range_multi_batch_parameter_builder(
+            metric_name="column.min",
+            metric_value_kwargs=None,
+            json_serialize=True,
+        )
+        column_max_values_range_parameter_builder_for_validations: ParameterBuilder = DataAssistant.COMMONLY_USED_PARAMETER_BUILDERS.build_numeric_metric_range_multi_batch_parameter_builder(
+            metric_name="column.max",
+            metric_value_kwargs=None,
+            json_serialize=True,
+        )
+        column_quantile_values_range_parameter_builder_for_validations: ParameterBuilder = DataAssistant.COMMONLY_USED_PARAMETER_BUILDERS.build_numeric_metric_range_multi_batch_parameter_builder(
+            metric_name="column.quantile_values",
+            metric_value_kwargs={
+                "quantiles": f"{VARIABLES_KEY}quantiles",
+                "allow_relative_error": f"{VARIABLES_KEY}allow_relative_error",
+            },
+            json_serialize=True,
+        )
+        column_median_values_range_parameter_builder_for_validations: ParameterBuilder = DataAssistant.COMMONLY_USED_PARAMETER_BUILDERS.build_numeric_metric_range_multi_batch_parameter_builder(
+            metric_name="column.median",
+            metric_value_kwargs=None,
+            json_serialize=True,
+        )
+        column_mean_values_range_parameter_builder_for_validations: ParameterBuilder = DataAssistant.COMMONLY_USED_PARAMETER_BUILDERS.build_numeric_metric_range_multi_batch_parameter_builder(
+            metric_name="column.mean",
+            metric_value_kwargs=None,
+            json_serialize=True,
+        )
+        column_standard_deviation_values_range_parameter_builder_for_validations: ParameterBuilder = DataAssistant.COMMONLY_USED_PARAMETER_BUILDERS.build_numeric_metric_range_multi_batch_parameter_builder(
+            metric_name="column.standard_deviation",
+            metric_value_kwargs=None,
+            json_serialize=True,
+        )
+
+        validation_parameter_builder_configs: Optional[List[ParameterBuilderConfig]]
+
+        # Step-4: Pass "validation" "ParameterBuilderConfig" objects to every "DefaultExpectationConfigurationBuilder", responsible for emitting "ExpectationConfiguration" (with specified "expectation_type").
+
+        validation_parameter_builder_configs = [
+            ParameterBuilderConfig(
+                **column_min_values_range_parameter_builder_for_validations.to_json_dict(),
+            ),
+        ]
+        expect_column_min_to_be_between_expectation_configuration_builder: DefaultExpectationConfigurationBuilder = DefaultExpectationConfigurationBuilder(
+            expectation_type="expect_column_min_to_be_between",
+            validation_parameter_builder_configs=validation_parameter_builder_configs,
+            column=f"{DOMAIN_KWARGS_PARAMETER_FULLY_QUALIFIED_NAME}{FULLY_QUALIFIED_PARAMETER_NAME_SEPARATOR_CHARACTER}column",
+            min_value=f"{column_min_values_range_parameter_builder_for_validations.fully_qualified_parameter_name}{FULLY_QUALIFIED_PARAMETER_NAME_SEPARATOR_CHARACTER}{FULLY_QUALIFIED_PARAMETER_NAME_VALUE_KEY}[0]",
+            max_value=f"{column_min_values_range_parameter_builder_for_validations.fully_qualified_parameter_name}{FULLY_QUALIFIED_PARAMETER_NAME_SEPARATOR_CHARACTER}{FULLY_QUALIFIED_PARAMETER_NAME_VALUE_KEY}[1]",
+            strict_min=f"{VARIABLES_KEY}strict_min",
+            strict_max=f"{VARIABLES_KEY}strict_max",
+            meta={
+                "profiler_details": f"{column_min_values_range_parameter_builder_for_validations.fully_qualified_parameter_name}{FULLY_QUALIFIED_PARAMETER_NAME_SEPARATOR_CHARACTER}{FULLY_QUALIFIED_PARAMETER_NAME_METADATA_KEY}",
+            },
+        )
+
+        validation_parameter_builder_configs = [
+            ParameterBuilderConfig(
+                **column_max_values_range_parameter_builder_for_validations.to_json_dict(),
+            ),
+        ]
+        expect_column_max_to_be_between_expectation_configuration_builder: DefaultExpectationConfigurationBuilder = DefaultExpectationConfigurationBuilder(
+            expectation_type="expect_column_max_to_be_between",
+            validation_parameter_builder_configs=validation_parameter_builder_configs,
+            column=f"{DOMAIN_KWARGS_PARAMETER_FULLY_QUALIFIED_NAME}{FULLY_QUALIFIED_PARAMETER_NAME_SEPARATOR_CHARACTER}column",
+            min_value=f"{column_max_values_range_parameter_builder_for_validations.fully_qualified_parameter_name}{FULLY_QUALIFIED_PARAMETER_NAME_SEPARATOR_CHARACTER}{FULLY_QUALIFIED_PARAMETER_NAME_VALUE_KEY}[0]",
+            max_value=f"{column_max_values_range_parameter_builder_for_validations.fully_qualified_parameter_name}{FULLY_QUALIFIED_PARAMETER_NAME_SEPARATOR_CHARACTER}{FULLY_QUALIFIED_PARAMETER_NAME_VALUE_KEY}[1]",
+            strict_min=f"{VARIABLES_KEY}strict_min",
+            strict_max=f"{VARIABLES_KEY}strict_max",
+            meta={
+                "profiler_details": f"{column_max_values_range_parameter_builder_for_validations.fully_qualified_parameter_name}{FULLY_QUALIFIED_PARAMETER_NAME_SEPARATOR_CHARACTER}{FULLY_QUALIFIED_PARAMETER_NAME_METADATA_KEY}",
+            },
+        )
+
+        validation_parameter_builder_configs = [
+            ParameterBuilderConfig(
+                **column_min_values_range_parameter_builder_for_validations.to_json_dict(),
+            ),
+            ParameterBuilderConfig(
+                **column_max_values_range_parameter_builder_for_validations.to_json_dict(),
+            ),
+        ]
+        expect_column_values_to_be_between_expectation_configuration_builder: DefaultExpectationConfigurationBuilder = DefaultExpectationConfigurationBuilder(
+            expectation_type="expect_column_values_to_be_between",
+            validation_parameter_builder_configs=validation_parameter_builder_configs,
+            column=f"{DOMAIN_KWARGS_PARAMETER_FULLY_QUALIFIED_NAME}{FULLY_QUALIFIED_PARAMETER_NAME_SEPARATOR_CHARACTER}column",
+            min_value=f"{column_min_values_range_parameter_builder_for_validations.fully_qualified_parameter_name}{FULLY_QUALIFIED_PARAMETER_NAME_SEPARATOR_CHARACTER}{FULLY_QUALIFIED_PARAMETER_NAME_VALUE_KEY}[0]",
+            max_value=f"{column_max_values_range_parameter_builder_for_validations.fully_qualified_parameter_name}{FULLY_QUALIFIED_PARAMETER_NAME_SEPARATOR_CHARACTER}{FULLY_QUALIFIED_PARAMETER_NAME_VALUE_KEY}[1]",
+            mostly=f"{VARIABLES_KEY}mostly",
+            strict_min=f"{VARIABLES_KEY}strict_min",
+            strict_max=f"{VARIABLES_KEY}strict_max",
+            meta={
+                "profiler_details": {
+                    "column_min_values_range_estimator": f"{column_min_values_range_parameter_builder_for_validations.fully_qualified_parameter_name}{FULLY_QUALIFIED_PARAMETER_NAME_SEPARATOR_CHARACTER}{FULLY_QUALIFIED_PARAMETER_NAME_METADATA_KEY}",
+                    "column_max_values_range_estimator": f"{column_max_values_range_parameter_builder_for_validations.fully_qualified_parameter_name}{FULLY_QUALIFIED_PARAMETER_NAME_SEPARATOR_CHARACTER}{FULLY_QUALIFIED_PARAMETER_NAME_METADATA_KEY}",
+                },
+            },
+        )
+
+        validation_parameter_builder_configs = [
+            ParameterBuilderConfig(
+                **column_quantile_values_range_parameter_builder_for_validations.to_json_dict(),
+            ),
+        ]
+        expect_expect_column_quantile_values_to_be_between_expectation_configuration_builder: DefaultExpectationConfigurationBuilder = DefaultExpectationConfigurationBuilder(
+            expectation_type="expect_column_quantile_values_to_be_between",
+            validation_parameter_builder_configs=validation_parameter_builder_configs,
+            column=f"{DOMAIN_KWARGS_PARAMETER_FULLY_QUALIFIED_NAME}{FULLY_QUALIFIED_PARAMETER_NAME_SEPARATOR_CHARACTER}column",
+            quantile_ranges={
+                "quantiles": f"{VARIABLES_KEY}quantiles",
+                "value_ranges": f"{column_quantile_values_range_parameter_builder_for_validations.fully_qualified_parameter_name}{FULLY_QUALIFIED_PARAMETER_NAME_SEPARATOR_CHARACTER}{FULLY_QUALIFIED_PARAMETER_NAME_VALUE_KEY}",
+            },
+            allow_relative_error=f"{VARIABLES_KEY}allow_relative_error",
+            meta={
+                "profiler_details": f"{column_max_values_range_parameter_builder_for_validations.fully_qualified_parameter_name}{FULLY_QUALIFIED_PARAMETER_NAME_SEPARATOR_CHARACTER}{FULLY_QUALIFIED_PARAMETER_NAME_METADATA_KEY}",
+            },
+        )
+
+        validation_parameter_builder_configs = [
+            ParameterBuilderConfig(
+                **column_median_values_range_parameter_builder_for_validations.to_json_dict(),
+            ),
+        ]
+        expect_column_median_to_be_between_expectation_configuration_builder: DefaultExpectationConfigurationBuilder = DefaultExpectationConfigurationBuilder(
+            expectation_type="expect_column_median_to_be_between",
+            validation_parameter_builder_configs=validation_parameter_builder_configs,
+            column=f"{DOMAIN_KWARGS_PARAMETER_FULLY_QUALIFIED_NAME}{FULLY_QUALIFIED_PARAMETER_NAME_SEPARATOR_CHARACTER}column",
+            min_value=f"{column_median_values_range_parameter_builder_for_validations.fully_qualified_parameter_name}{FULLY_QUALIFIED_PARAMETER_NAME_SEPARATOR_CHARACTER}{FULLY_QUALIFIED_PARAMETER_NAME_VALUE_KEY}[0]",
+            max_value=f"{column_median_values_range_parameter_builder_for_validations.fully_qualified_parameter_name}{FULLY_QUALIFIED_PARAMETER_NAME_SEPARATOR_CHARACTER}{FULLY_QUALIFIED_PARAMETER_NAME_VALUE_KEY}[1]",
+            strict_min=f"{VARIABLES_KEY}strict_min",
+            strict_max=f"{VARIABLES_KEY}strict_max",
+            meta={
+                "profiler_details": f"{column_median_values_range_parameter_builder_for_validations.fully_qualified_parameter_name}{FULLY_QUALIFIED_PARAMETER_NAME_SEPARATOR_CHARACTER}{FULLY_QUALIFIED_PARAMETER_NAME_METADATA_KEY}",
+            },
+        )
+
+        validation_parameter_builder_configs = [
+            ParameterBuilderConfig(
+                **column_mean_values_range_parameter_builder_for_validations.to_json_dict(),
+            ),
+        ]
+        expect_column_mean_to_be_between_expectation_configuration_builder: DefaultExpectationConfigurationBuilder = DefaultExpectationConfigurationBuilder(
+            expectation_type="expect_column_mean_to_be_between",
+            validation_parameter_builder_configs=validation_parameter_builder_configs,
+            column=f"{DOMAIN_KWARGS_PARAMETER_FULLY_QUALIFIED_NAME}{FULLY_QUALIFIED_PARAMETER_NAME_SEPARATOR_CHARACTER}column",
+            min_value=f"{column_mean_values_range_parameter_builder_for_validations.fully_qualified_parameter_name}{FULLY_QUALIFIED_PARAMETER_NAME_SEPARATOR_CHARACTER}{FULLY_QUALIFIED_PARAMETER_NAME_VALUE_KEY}[0]",
+            max_value=f"{column_mean_values_range_parameter_builder_for_validations.fully_qualified_parameter_name}{FULLY_QUALIFIED_PARAMETER_NAME_SEPARATOR_CHARACTER}{FULLY_QUALIFIED_PARAMETER_NAME_VALUE_KEY}[1]",
+            strict_min=f"{VARIABLES_KEY}strict_min",
+            strict_max=f"{VARIABLES_KEY}strict_max",
+            meta={
+                "profiler_details": f"{column_mean_values_range_parameter_builder_for_validations.fully_qualified_parameter_name}{FULLY_QUALIFIED_PARAMETER_NAME_SEPARATOR_CHARACTER}{FULLY_QUALIFIED_PARAMETER_NAME_METADATA_KEY}",
+            },
+        )
+
+        validation_parameter_builder_configs = [
+            ParameterBuilderConfig(
+                **column_standard_deviation_values_range_parameter_builder_for_validations.to_json_dict(),
+            ),
+        ]
+        expect_column_standard_deviation_to_be_between_expectation_configuration_builder: DefaultExpectationConfigurationBuilder = DefaultExpectationConfigurationBuilder(
+            expectation_type="expect_column_standard_deviation_to_be_between",
+            validation_parameter_builder_configs=validation_parameter_builder_configs,
+            column=f"{DOMAIN_KWARGS_PARAMETER_FULLY_QUALIFIED_NAME}{FULLY_QUALIFIED_PARAMETER_NAME_SEPARATOR_CHARACTER}column",
+            min_value=f"{column_standard_deviation_values_range_parameter_builder_for_validations.fully_qualified_parameter_name}{FULLY_QUALIFIED_PARAMETER_NAME_SEPARATOR_CHARACTER}{FULLY_QUALIFIED_PARAMETER_NAME_VALUE_KEY}[0]",
+            max_value=f"{column_standard_deviation_values_range_parameter_builder_for_validations.fully_qualified_parameter_name}{FULLY_QUALIFIED_PARAMETER_NAME_SEPARATOR_CHARACTER}{FULLY_QUALIFIED_PARAMETER_NAME_VALUE_KEY}[1]",
+            strict_min=f"{VARIABLES_KEY}strict_min",
+            strict_max=f"{VARIABLES_KEY}strict_max",
+            meta={
+                "profiler_details": f"{column_standard_deviation_values_range_parameter_builder_for_validations.fully_qualified_parameter_name}{FULLY_QUALIFIED_PARAMETER_NAME_SEPARATOR_CHARACTER}{FULLY_QUALIFIED_PARAMETER_NAME_METADATA_KEY}",
+            },
+        )
+
+        # Step-5: Instantiate and return "Rule" object, comprised of "variables", "domain_builder", "parameter_builders", and "expectation_configuration_builders" components.
+
+        variables: dict = {
+            "mostly": 1.0,
+            "strict_min": False,
+            "strict_max": False,
+            "quantiles": [
+                0.25,
+                0.5,
+                0.75,
+            ],
+            "allow_relative_error": "linear",
+            "bins": 10,
+            "false_positive_rate": 0.05,
+            "quantile_statistic_interpolation_method": "auto",
+            "estimator": "bootstrap",
+            "n_resamples": 9999,
+            "random_seed": None,
+            "include_estimator_samples_histogram_in_details": False,
+            "truncate_values": {
+                "lower_bound": None,
+                "upper_bound": None,
+            },
+            "round_decimals": 1,
+        }
+        parameter_builders: List[ParameterBuilder] = [
+            column_histogram_metric_multi_batch_parameter_builder_for_metrics,
+            column_column_quantile_values_metric_multi_batch_parameter_builder_for_metrics,
+            column_min_metric_multi_batch_parameter_builder_for_metrics,
+            column_max_metric_multi_batch_parameter_builder_for_metrics,
+            column_median_metric_multi_batch_parameter_builder_for_metrics,
+            column_mean_metric_multi_batch_parameter_builder_for_metrics,
+            column_standard_deviation_metric_multi_batch_parameter_builder_for_metrics,
+        ]
+        expectation_configuration_builders: List[ExpectationConfigurationBuilder] = [
+            expect_column_min_to_be_between_expectation_configuration_builder,
+            expect_column_max_to_be_between_expectation_configuration_builder,
+            expect_column_values_to_be_between_expectation_configuration_builder,
+            expect_expect_column_quantile_values_to_be_between_expectation_configuration_builder,
+            expect_column_median_to_be_between_expectation_configuration_builder,
+            expect_column_mean_to_be_between_expectation_configuration_builder,
+            expect_column_standard_deviation_to_be_between_expectation_configuration_builder,
+        ]
+        rule: Rule = Rule(
+            name="numeric_columns_rule",
+            variables=variables,
+            domain_builder=numeric_column_type_domain_builder,
+            parameter_builders=parameter_builders,
+            expectation_configuration_builders=expectation_configuration_builders,
+        )
+
+        return rule
diff --git a/great_expectations/rule_based_profiler/types/data_assistant_result/onboarding_data_assistant_result.py b/great_expectations/rule_based_profiler/types/data_assistant_result/onboarding_data_assistant_result.py
--- a/great_expectations/rule_based_profiler/types/data_assistant_result/onboarding_data_assistant_result.py
+++ b/great_expectations/rule_based_profiler/types/data_assistant_result/onboarding_data_assistant_result.py
@@ -1,22 +1,7 @@
-from typing import Any, Dict, List, Optional
-
 from great_expectations.rule_based_profiler.types.data_assistant_result import (
     DataAssistantResult,
 )
-from great_expectations.rule_based_profiler.types.data_assistant_result.plot_result import (
-    PlotResult,
-)
 
 
 class OnboardingDataAssistantResult(DataAssistantResult):
-    def plot(
-        self,
-        prescriptive: bool = False,
-        theme: Optional[Dict[str, Any]] = None,
-        include_column_names: Optional[List[str]] = None,
-        exclude_column_names: Optional[List[str]] = None,
-    ) -> PlotResult:
-        """
-        Displays relevant charts for usecases reperesented by "OnboardingDataAssistantResult" object.
-        """
-        pass
+    pass


Test patch:
diff --git a/tests/rule_based_profiler/data_assistant/test_onboarding_data_assistant.py b/tests/rule_based_profiler/data_assistant/test_onboarding_data_assistant.py
--- a/tests/rule_based_profiler/data_assistant/test_onboarding_data_assistant.py
+++ b/tests/rule_based_profiler/data_assistant/test_onboarding_data_assistant.py
@@ -1,6 +1,14 @@
+from typing import Dict, Optional, cast
+
 import pytest
+from freezegun import freeze_time
 
 from great_expectations import DataContext
+from great_expectations.rule_based_profiler.types import (
+    FULLY_QUALIFIED_PARAMETER_NAME_ATTRIBUTED_VALUE_KEY,
+    Domain,
+    ParameterNode,
+)
 from great_expectations.rule_based_profiler.types.data_assistant_result import (
     DataAssistantResult,
     OnboardingDataAssistantResult,
@@ -8,7 +16,7 @@
 
 
 @pytest.fixture
-def onboarding_data_assistant_result(
+def bobby_onboarding_data_assistant_result(
     bobby_columnar_table_multi_batch_deterministic_data_context: DataContext,
 ) -> OnboardingDataAssistantResult:
     context: DataContext = bobby_columnar_table_multi_batch_deterministic_data_context
@@ -19,21 +27,89 @@ def onboarding_data_assistant_result(
         "data_asset_name": "my_reports",
     }
 
-    return context.assistants.onboarding.run(batch_request=batch_request)
+    data_assistant_result: DataAssistantResult = context.assistants.onboarding.run(
+        batch_request=batch_request
+    )
+
+    return cast(OnboardingDataAssistantResult, data_assistant_result)
+
+
+@pytest.fixture
+def quentin_implicit_invocation_result_actual_time(
+    quentin_columnar_table_multi_batch_data_context,
+    set_consistent_seed_within_numeric_metric_range_multi_batch_parameter_builder,
+):
+    context: DataContext = quentin_columnar_table_multi_batch_data_context
+
+    batch_request: dict = {
+        "datasource_name": "taxi_pandas",
+        "data_connector_name": "monthly",
+        "data_asset_name": "my_reports",
+    }
+
+    data_assistant_result: DataAssistantResult = context.assistants.onboarding.run(
+        batch_request=batch_request
+    )
+
+    return cast(OnboardingDataAssistantResult, data_assistant_result)
+
+
+@pytest.fixture
+@freeze_time("09/26/2019 13:42:41")
+def quentin_implicit_invocation_result_frozen_time(
+    quentin_columnar_table_multi_batch_data_context,
+    set_consistent_seed_within_numeric_metric_range_multi_batch_parameter_builder,
+):
+    context: DataContext = quentin_columnar_table_multi_batch_data_context
+
+    batch_request: dict = {
+        "datasource_name": "taxi_pandas",
+        "data_connector_name": "monthly",
+        "data_asset_name": "my_reports",
+    }
+
+    data_assistant_result: DataAssistantResult = context.assistants.onboarding.run(
+        batch_request=batch_request
+    )
+
+    return cast(OnboardingDataAssistantResult, data_assistant_result)
 
 
 def test_onboarding_data_assistant_result_serialization(
-    onboarding_data_assistant_result: OnboardingDataAssistantResult,
+    bobby_onboarding_data_assistant_result: OnboardingDataAssistantResult,
 ) -> None:
     onboarding_data_assistant_result_as_dict: dict = (
-        onboarding_data_assistant_result.to_dict()
+        bobby_onboarding_data_assistant_result.to_dict()
     )
     assert (
         set(onboarding_data_assistant_result_as_dict.keys())
         == DataAssistantResult.ALLOWED_KEYS
     )
     assert (
-        onboarding_data_assistant_result.to_json_dict()
+        bobby_onboarding_data_assistant_result.to_json_dict()
         == onboarding_data_assistant_result_as_dict
     )
-    assert len(onboarding_data_assistant_result.profiler_config.rules) == 4
+    assert len(bobby_onboarding_data_assistant_result.profiler_config.rules) == 5
+
+
+def test_onboarding_data_assistant_result_batch_id_to_batch_identifier_display_name_map_coverage(
+    bobby_onboarding_data_assistant_result: OnboardingDataAssistantResult,
+):
+    metrics_by_domain: Optional[
+        Dict[Domain, Dict[str, ParameterNode]]
+    ] = bobby_onboarding_data_assistant_result.metrics_by_domain
+
+    parameter_values_for_fully_qualified_parameter_names: Dict[str, ParameterNode]
+    parameter_node: ParameterNode
+    batch_id: str
+    assert all(
+        bobby_onboarding_data_assistant_result.batch_id_to_batch_identifier_display_name_map[
+            batch_id
+        ]
+        is not None
+        for parameter_values_for_fully_qualified_parameter_names in metrics_by_domain.values()
+        for parameter_node in parameter_values_for_fully_qualified_parameter_names.values()
+        for batch_id in parameter_node[
+            FULLY_QUALIFIED_PARAMETER_NAME_ATTRIBUTED_VALUE_KEY
+        ].keys()
+    )
diff --git a/tests/rule_based_profiler/data_assistant/test_volume_data_assistant.py b/tests/rule_based_profiler/data_assistant/test_volume_data_assistant.py
--- a/tests/rule_based_profiler/data_assistant/test_volume_data_assistant.py
+++ b/tests/rule_based_profiler/data_assistant/test_volume_data_assistant.py
@@ -29,13 +29,11 @@
 from great_expectations.rule_based_profiler.types.altair import AltairDataTypes
 from great_expectations.rule_based_profiler.types.data_assistant_result import (
     DataAssistantResult,
+    VolumeDataAssistantResult,
 )
 from great_expectations.rule_based_profiler.types.data_assistant_result.plot_result import (
     PlotResult,
 )
-from great_expectations.rule_based_profiler.types.data_assistant_result.volume_data_assistant_result import (
-    VolumeDataAssistantResult,
-)
 from great_expectations.util import deep_filter_properties_iterable
 from great_expectations.validator.validator import Validator
 from tests.render.test_util import load_notebook_from_path
@@ -2579,7 +2577,11 @@ def bobby_volume_data_assistant_result(
         "data_asset_name": "my_reports",
     }
 
-    return context.assistants.volume.run(batch_request=batch_request)
+    data_assistant_result: DataAssistantResult = context.assistants.volume.run(
+        batch_request=batch_request
+    )
+
+    return cast(VolumeDataAssistantResult, data_assistant_result)
 
 
 @pytest.fixture