code: def test_data_config_with_separate_facet_dataset():
      s3_data_input_path = "s3://path/to/input.csv"
      s3_output_path = "s3://path/to/output"
      label_name = "Label"
      headers = ["Label", "F1", "F2", "F3", "F4"]
  
      # facets NOT in input dataset
      joinsource = 5
      facet_dataset_uri = "s3://path/to/facet.csv"
      facet_headers = ["Age"]
      predicted_label_dataset_uri = "s3://path/to/pred.csv"
      predicted_label_headers = ["Label", "F1", "F2", "F3", "F4", "Age"]
      predicted_label = "predicted_label"
      excluded_columns = "F4"
  
      data_config_no_facet = DataConfig(
          s3_data_input_path=s3_data_input_path,
          s3_output_path=s3_output_path,
          label=label_name,
          headers=headers,
          dataset_type="text/csv",
          joinsource=joinsource,
          facet_dataset_uri=facet_dataset_uri,
          facet_headers=facet_headers,
          predicted_label_dataset_uri=predicted_label_dataset_uri,
          predicted_label_headers=predicted_label_headers,
          predicted_label=predicted_label,
          excluded_columns=excluded_columns,
      )
  
      expected_config_no_facet = {
          "dataset_type": "text/csv",
          "headers": headers,
          "label": label_name,
          "joinsource_name_or_index": joinsource,
          "facet_dataset_uri": facet_dataset_uri,
          "facet_headers": facet_headers,
          "predicted_label_dataset_uri": predicted_label_dataset_uri,
          "predicted_label_headers": predicted_label_headers,
          "predicted_label": predicted_label,
          "excluded_columns": excluded_columns,
      }
  
      assert (
          expected_config_no_facet == data_config_no_facet.get_config()
      )
      assert (
          joinsource
          == data_config_no_facet.analysis_config[
              "joinsource_name_or_index"
          ]
      )
      assert facet_dataset_uri == data_config_no_facet.facet_dataset_uri
      assert facet_headers == data_config_no_facet.facet_headers
      assert (
          predicted_label_dataset_uri
          == data_config_no_facet.predicted_label_dataset_uri
      )
      assert (
          predicted_label_headers
          == data_config_no_facet.predicted_label_headers
      )
      assert predicted_label == data_config_no_facet.predicted_label
  
      excluded_columns = "F4"
      data_config_excluded_cols = DataConfig(
          s3_data_input_path=s3_data_input_path,
          s3_output_path=s3_output_path,
          label=label_name,
          headers=headers,
          dataset_type="text/csv",
          joinsource=joinsource,
          excluded_columns=excluded_columns,
      )
  
      expected_config_excluded_cols = {
          "dataset_type": "text/csv",
          "headers": headers,
          "label": label_name,
          "joinsource_name_or_index": joinsource,
          "excluded_columns": excluded_columns,
      }
  
      assert (
          expected_config_excluded_cols
          == data_config_excluded_cols.get_config()
      )
      assert (
          joinsource
          == data_config_excluded_cols.analysis_config[
              "joinsource_name_or_index"
          ]
      )
      assert (
          excluded_columns == data_config_excluded_cols.excluded_columns
      )
  
imports: from __future__ import absolute_import, print_function
  import copy
  import pytest
  from mock import MagicMock, Mock, patch
  from sagemaker import Processor, image_uris
  from sagemaker.clarify import BiasConfig, DataConfig, ModelConfig, ModelPredictedLabelConfig, PDPConfig, SageMakerClarifyProcessor, SHAPConfig, TextConfig, ImageConfig, _AnalysisConfigGenerator, DatasetType, ProcessingOutputHandler, SegmentationConfig
label_desc: Use image node_id 3 for calling a global function with example usage: test_data_config_with_separate_facet_dataset() without return types