class_docstr: API for detecting feature skew between training and serving examples.
  
  Example:
  
  ```python
    with beam.Pipeline(runner=...) as p:
       training_examples = p | 'ReadTrainingData' >>
         beam.io.ReadFromTFRecord(
            training_filepaths, coder=beam.coders.ProtoCoder(tf.train.Example))
       serving_examples = p | 'ReadServingData' >>
         beam.io.ReadFromTFRecord(
            serving_filepaths, coder=beam.coders.ProtoCoder(tf.train.Example))
       _ = ((training_examples, serving_examples) | 'DetectFeatureSkew' >>
         DetectFeatureSkew(identifier_features=['id1'], sample_size=5)
       | 'WriteFeatureSkewResultsOutput' >>
         tfdv.WriteFeatureSkewResultsToTFRecord(output_path)
       | 'WriteFeatureSkwePairsOutput' >>
       tfdv.WriteFeatureSkewPairsToTFRecord(output_path))
  ```
  
  See the documentation for DetectFeatureSkewImpl for more detail about feature
  skew detection.
class_docstr_tok: ["API","for","detecting","feature","skew","between","training","and","serving","examples",".","Example",":","``","`","python","with","beam.Pipeline","(","runner=","...",")","as","p",":","training_examples","=","p","|","'ReadTrainingData","'",">",">","beam.io.ReadFromTFRecord","(","training_filepaths",",","coder=beam.coders.ProtoCoder","(","tf.train.Example",")",")","serving_examples","=","p","|","'ReadServingData","'",">",">","beam.io.ReadFromTFRecord","(","serving_filepaths",",","coder=beam.coders.ProtoCoder","(","tf.train.Example",")",")","_","=","(","(","training_examples",",","serving_examples",")","|","'DetectFeatureSkew","'",">",">","DetectFeatureSkew","(","identifier_features=","[","'id1","'","]",",","sample_size=5",")","|","'WriteFeatureSkewResultsOutput","'",">",">","tfdv.WriteFeatureSkewResultsToTFRecord","(","output_path",")","|","'WriteFeatureSkwePairsOutput","'",">",">","tfdv.WriteFeatureSkewPairsToTFRecord","(","output_path",")",")","``","`","See","the","documentation","for","DetectFeatureSkewImpl","for","more","detail","about","feature","skew","detection","."]
docstr: Initializes the feature skew detection PTransform.
  
  Args:
    identifier_features: Names of features to use as identifiers.
    features_to_ignore: Names of features for which no feature skew detection
      is done.
    sample_size: Size of the sample of training-serving example pairs that
      exhibit skew to include in the skew results.
    float_round_ndigits: Number of digits precision after the decimal point to
      which to round float values before comparing them.
    allow_duplicate_identifiers: If set, skew detection will be done on
      examples for which there are duplicate identifier feature values. In
      this case, the counts in the FeatureSkew result are based on each
      training-serving example pair analyzed. Examples with given identifier
      feature values must all fit in memory.
docstr_tok: ["Initializes","the","feature","skew","detection","PTransform",".","Args",":","identifier_features",":","Names","of","features","to","use","as","identifiers",".","features_to_ignore",":","Names","of","features","for","which","no","feature","skew","detection","is","done",".","sample_size",":","Size","of","the","sample","of","training-serving","example","pairs","that","exhibit","skew","to","include","in","the","skew","results",".","float_round_ndigits",":","Number","of","digits","precision","after","the","decimal","point","to","which","to","round","float","values","before","comparing","them",".","allow_duplicate_identifiers",":","If","set",",","skew","detection","will","be","done","on","examples","for","which","there","are","duplicate","identifier","feature","values",".","In","this","case",",","the","counts","in","the","FeatureSkew","result","are","based","on","each","training-serving","example","pair","analyzed",".","Examples","with","given","identifier","feature","values","must","all","fit","in","memory","."]
code: def __init__(
      self,
      identifier_features: List[types.FeatureName],
      features_to_ignore: Optional[List[types.FeatureName]] = None,
      sample_size: int = 0,
      float_round_ndigits: Optional[int] = None,
      allow_duplicate_identifiers: bool = False,
  ) -> None:
      """Initializes the feature skew detection PTransform.
  
      Args:
        identifier_features: Names of features to use as identifiers.
        features_to_ignore: Names of features for which no feature skew detection
          is done.
        sample_size: Size of the sample of training-serving example pairs that
          exhibit skew to include in the skew results.
        float_round_ndigits: Number of digits precision after the decimal point to
          which to round float values before comparing them.
        allow_duplicate_identifiers: If set, skew detection will be done on
          examples for which there are duplicate identifier feature values. In
          this case, the counts in the FeatureSkew result are based on each
          training-serving example pair analyzed. Examples with given identifier
          feature values must all fit in memory.
      """
      self._identifier_features = identifier_features
      self._features_to_ignore = features_to_ignore
      self._sample_size = sample_size
      self._float_round_ndigits = float_round_ndigits
      self._allow_duplicate_identifiers = allow_duplicate_identifiers
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import itertools
  import logging
  from typing import Callable, Iterable, List, Optional, Text, Tuple, Set
  import apache_beam
  import pyarrow
  import tensorflow
  from tensorflow_data_validation import constants
  from tensorflow_data_validation import types
  from tensorflow_data_validation.anomalies.proto import custom_validation_config_pb2
  from tensorflow_data_validation.anomalies.proto import validation_config_pb2
  from tensorflow_data_validation.anomalies.proto import validation_metadata_pb2
  from tensorflow_data_validation.api import validation_options
  from tensorflow_data_validation.pywrap.tensorflow_data_validation_extension import validation
  from tensorflow_data_validation.skew import feature_skew_detector
  from tensorflow_data_validation.skew.protos import feature_skew_results_pb2
  from tensorflow_data_validation.statistics import stats_impl
  from tensorflow_data_validation.statistics import stats_options
  from tensorflow_data_validation.utils import anomalies_util
  from tensorflow_data_validation.utils import slicing_util
  from tensorflow_data_validation.utils import stats_util
  from tensorflow_metadata.proto.v0 import anomalies_pb2
  from tensorflow_metadata.proto.v0 import schema_pb2
  from tensorflow_metadata.proto.v0 import statistics_pb2
label_desc: Use image node_id 1 to create a new DetectFeatureSkew object from inherited base classes: beam with example: obj = DetectFeatureSkew(identifier_features, features_to_ignore, sample_size, float_round_ndigits, allow_duplicate_identifiers)