class_docstr: An abstract pipeline loader for the estimates datasets that loads
  data from a blaze expression.
  
  Parameters
  ----------
  expr : Expr
      The expression representing the data to load.
  columns : dict[str -> str]
      A dict mapping BoundColumn names to the associated names in `expr`.
  resources : dict, optional
      Mapping from the loadable terms of ``expr`` to actual data resources.
  odo_kwargs : dict, optional
      Extra keyword arguments to pass to odo when executing the expression.
  checkpoints : Expr, optional
      The expression representing checkpointed data to be used for faster
      forward-filling of data from `expr`.
  
  Notes
  -----
  The expression should have a tabular dshape of::
  
     Dim * {{
         {SID_FIELD_NAME}: int64,
         {TS_FIELD_NAME}: datetime,
         {FISCAL_YEAR_FIELD_NAME}: float64,
         {FISCAL_QUARTER_FIELD_NAME}: float64,
         {EVENT_DATE_FIELD_NAME}: datetime,
     }}
  
  And other dataset-specific fields, where each row of the table is a
  record including the sid to identify the company, the timestamp where we
  learned about the announcement, and the date of the event.
  
  If the '{TS_FIELD_NAME}' field is not included it is assumed that we
  start the backtest with knowledge of all announcements.
code: def load_adjusted_array(self, domain, columns, dates, sids, mask):
      # Only load requested columns.
      requested_column_names = [
          self._columns[column.name] for column in columns
      ]
  
      raw = load_raw_data(
          sids,
          dates,
          self._expr[
              sorted(metadata_columns.union(requested_column_names))
          ],
          self._odo_kwargs,
          checkpoints=self._checkpoints,
      )
  
      return self.loader(
          raw,
          {
              column.name: self._columns[column.name]
              for column in columns
          },
      ).load_adjusted_array(
          domain,
          columns,
          dates,
          sids,
          mask,
      )
  
imports: from interface import implements
  from datashape import istabular
  from .core import bind_expression_to_resources
  from zipline.pipeline.common import EVENT_DATE_FIELD_NAME, FISCAL_QUARTER_FIELD_NAME, FISCAL_YEAR_FIELD_NAME, SID_FIELD_NAME, TS_FIELD_NAME
  from zipline.pipeline.loaders.base import PipelineLoader
  from zipline.pipeline.loaders.blaze.utils import load_raw_data
  from zipline.pipeline.loaders.earnings_estimates import NextEarningsEstimatesLoader, PreviousEarningsEstimatesLoader, required_estimates_fields, metadata_columns, PreviousSplitAdjustedEarningsEstimatesLoader, NextSplitAdjustedEarningsEstimatesLoader
label_desc: Use image node_id 2 for calling the BlazeEstimatesLoader obj's underlying member method code with example usage: obj.load_adjusted_array(domain, columns, dates, sids, mask) and returns: self