class_docstr: Chicago taxi dataset with a TFT preprocessing_fn containing specified number of analyzers.
  
  Note that the analyzers are called within the corresponding mappers. Half of
  the mappers will be `tft.compute_and_apply_vocabulary`. Another half is split
  between `tft.bucketize` and `tft.scale_to_z_score`.
class_docstr_tok: ["Chicago","taxi","dataset","with","a","TFT","preprocessing_fn","containing","specified","number","of","analyzers",".","Note","that","the","analyzers","are","called","within","the","corresponding","mappers",".","Half","of","the","mappers","will","be","`","tft.compute_and_apply_vocabulary","`",".","Another","half","is","split","between","`","tft.bucketize","`","and","`","tft.scale_to_z_score","`","."]
code: def tft_preprocessing_fn(self):
      def wide_preprocessing_fn(inputs):
          """TFT preprocessing function.
  
          Args:
            inputs: Map from feature keys to raw not-yet-transformed features.
  
          Returns:
            Map from string feature key to transformed feature operations.
          """
          outputs = {}
          for idx, key in enumerate(
              itertools.islice(
                  itertools.cycle(self._BUCKETIZE_KEYS),
                  self._num_bucketize,
              )
          ):
              outputs["bucketized" + str(idx)] = tft.bucketize(
                  taxi_utils._fill_in_missing(inputs[key]),
                  taxi_utils._FEATURE_BUCKET_COUNT,
              )
  
          for idx, key in enumerate(
              itertools.islice(
                  itertools.cycle(self._SCALE_KEYS), self._num_scale
              )
          ):
              # If sparse make it dense, setting nan's to 0 or '', and apply zscore.
              outputs["scaled" + str(idx)] = tft.scale_to_z_score(
                  taxi_utils._fill_in_missing(inputs[key])
              )
  
          for idx, key in enumerate(
              itertools.islice(
                  itertools.cycle(self._VOCABULARY_KEYS),
                  self._num_vocabs,
              )
          ):
              outputs[
                  "vocab" + str(idx)
              ] = tft.compute_and_apply_vocabulary(
                  taxi_utils._fill_in_missing(inputs[key]),
                  top_k=taxi_utils._VOCAB_SIZE,
                  num_oov_buckets=taxi_utils._OOV_SIZE,
              )
  
          # Pass-through features.
          for key in taxi_utils._CATEGORICAL_FEATURE_KEYS + [
              taxi_utils._LABEL_KEY
          ]:
              outputs[key] = inputs[key]
  
          return outputs
  
      return wide_preprocessing_fn
  
imports: import itertools
  import math
  import os
  import shutil
  import tempfile
  from typing import Optional
  from absl import logging
  import apache_beam
  import tensorflow_transform
  from tfx import components
  from tfx.benchmarks import benchmark_dataset
  from tfx.components.example_gen.csv_example_gen import executor
  from tfx.examples.chicago_taxi_pipeline import taxi_utils
  from tfx.orchestration import metadata
  from tfx.orchestration import pipeline
  from tfx.orchestration.beam.beam_dag_runner import BeamDagRunner
  from tfx.proto import trainer_pb2
  from tfx_bsl.coders import csv_decoder
label_desc: Use image node_id 2 for calling the WideChicagoTaxiDataset obj's underlying member method code with example usage: obj.tft_preprocessing_fn() and returns: wide_preprocessing_fn, outputs