class_docstr: Inference rule that checks for string columns with low cardinality to count ratio.
  
  The ratio is calculated as `distinct_count/(count - null_count)`.
code: def match_column(self, props: ColumnProperties) -> bool:  # noqa: D
      denom = props.row_count - props.null_count
  
      # undefined ratio
      if denom == 0:
          return False
  
      ratio = props.distinct_row_count / denom
      return ratio < self.threshold
  
file_path: metricflow/metricflow/inference/rule/rules.py
imports: from __future__ import annotations
  from abc import abstractmethod
  from typing import Callable, List, TypeVar
  from metricflow.inference.context.data_warehouse import ColumnProperties, DataWarehouseInferenceContext
  from metricflow.inference.models import InferenceSignal, InferenceSignalConfidence, InferenceSignalNode
  from metricflow.inference.rule.base import InferenceRule
label_desc: Use image node_id 2 for calling the LowCardinalityRatioRule obj's underlying member method code with example usage: obj.match_column(props) and returns: unknown, False