Class DimensionLookupMeta

All Implemented Interfaces:
Cloneable, ProvidesDatabaseConnectionInformation, ProvidesModelerMeta, StepAttributesInterface, StepMetaInterface

public class DimensionLookupMeta extends BaseDatabaseStepMeta implements StepMetaInterface, ProvidesModelerMeta
Since:
on 14-may-2003 WANTED: Interconnected Dynamic Lookups --> http://www.datawarehouse.com/article/?articleId=5354 The idea is here to create a central 'dimension' cache process, seperated from the other Kettle processes. Kettle then connects over a socket to this daemon-like process to check wether a certain dimension entry is present. Perhaps a more general caching service should be considered.
Author:
Matt
  • Field Details

    • TYPE_UPDATE_DIM_INSERT

      public static final int TYPE_UPDATE_DIM_INSERT
      See Also:
    • TYPE_UPDATE_DIM_UPDATE

      public static final int TYPE_UPDATE_DIM_UPDATE
      See Also:
    • TYPE_UPDATE_DIM_PUNCHTHROUGH

      public static final int TYPE_UPDATE_DIM_PUNCHTHROUGH
      See Also:
    • TYPE_UPDATE_DATE_INSUP

      public static final int TYPE_UPDATE_DATE_INSUP
      See Also:
    • TYPE_UPDATE_DATE_INSERTED

      public static final int TYPE_UPDATE_DATE_INSERTED
      See Also:
    • TYPE_UPDATE_DATE_UPDATED

      public static final int TYPE_UPDATE_DATE_UPDATED
      See Also:
    • TYPE_UPDATE_LAST_VERSION

      public static final int TYPE_UPDATE_LAST_VERSION
      See Also:
    • typeDesc

      public static final String[] typeDesc
    • typeCodes

      public static final String[] typeCodes
    • typeDescLookup

      public static final String[] typeDescLookup
    • START_DATE_ALTERNATIVE_NONE

      public static final int START_DATE_ALTERNATIVE_NONE
      See Also:
    • START_DATE_ALTERNATIVE_SYSDATE

      public static final int START_DATE_ALTERNATIVE_SYSDATE
      See Also:
    • START_DATE_ALTERNATIVE_START_OF_TRANS

      public static final int START_DATE_ALTERNATIVE_START_OF_TRANS
      See Also:
    • START_DATE_ALTERNATIVE_NULL

      public static final int START_DATE_ALTERNATIVE_NULL
      See Also:
    • START_DATE_ALTERNATIVE_COLUMN_VALUE

      public static final int START_DATE_ALTERNATIVE_COLUMN_VALUE
      See Also:
    • CREATION_METHOD_AUTOINC

      public static String CREATION_METHOD_AUTOINC
    • CREATION_METHOD_SEQUENCE

      public static String CREATION_METHOD_SEQUENCE
    • CREATION_METHOD_TABLEMAX

      public static String CREATION_METHOD_TABLEMAX
  • Constructor Details

    • DimensionLookupMeta

      public DimensionLookupMeta()
  • Method Details

    • getTableName

      public String getTableName()
      Description copied from interface: ProvidesDatabaseConnectionInformation
      Returns the table name for this step
      Specified by:
      getTableName in interface ProvidesDatabaseConnectionInformation
      Returns:
      Returns the tablename.
    • setTableName

      public void setTableName(String tablename)
      Parameters:
      tablename - The tablename to set.
    • getDatabaseMeta

      public org.pentaho.di.core.database.DatabaseMeta getDatabaseMeta()
      Description copied from interface: ProvidesDatabaseConnectionInformation
      Returns the database meta for this step
      Specified by:
      getDatabaseMeta in interface ProvidesDatabaseConnectionInformation
      Specified by:
      getDatabaseMeta in class BaseDatabaseStepMeta
      Returns:
      Returns the database.
    • setDatabaseMeta

      public void setDatabaseMeta(org.pentaho.di.core.database.DatabaseMeta database)
      Parameters:
      database - The database to set.
    • setConnection

      public void setConnection(String connectionName)
    • isUpdate

      public boolean isUpdate()
      Returns:
      Returns the update.
    • setUpdate

      public void setUpdate(boolean update)
      Parameters:
      update - The update to set.
    • isAutoIncrement

      public boolean isAutoIncrement()
      Returns:
      Returns the autoIncrement.
    • setAutoIncrement

      public void setAutoIncrement(boolean autoIncrement)
      Parameters:
      autoIncrement - The autoIncrement to set.
    • setTechKeyCreation

      public void setTechKeyCreation(String techKeyCreation)
      Set the way how the technical key field should be created.
      Parameters:
      techKeyCreation - which method to use for the creation of the technical key.
    • getTechKeyCreation

      public String getTechKeyCreation()
      Get the way how the technical key field should be created.
      Returns:
      creation way for the technical key.
    • getCommitSize

      public int getCommitSize()
      Returns:
      Returns the commitSize.
    • setCommitSize

      public void setCommitSize(int commitSize)
      Parameters:
      commitSize - The commitSize to set.
    • getDateField

      public String getDateField()
      Returns:
      Returns the dateField.
    • setDateField

      public void setDateField(String dateField)
      Parameters:
      dateField - The dateField to set.
    • getDateFrom

      public String getDateFrom()
      Returns:
      Returns the dateFrom.
    • setDateFrom

      public void setDateFrom(String dateFrom)
      Parameters:
      dateFrom - The dateFrom to set.
    • getDateTo

      public String getDateTo()
      Returns:
      Returns the dateTo.
    • setDateTo

      public void setDateTo(String dateTo)
      Parameters:
      dateTo - The dateTo to set.
    • getFieldLookup

      public String[] getFieldLookup()
      Returns:
      Fields in the dimension to update or retrieve.
    • setFieldLookup

      public void setFieldLookup(String[] fieldLookup)
      Parameters:
      fieldLookup - sets the fields in the dimension to update or retrieve.
    • getFieldStream

      public String[] getFieldStream()
      Returns:
      Fields containing the values in the input stream to update the dimension with.
    • setFieldStream

      public void setFieldStream(String[] fieldStream)
      Parameters:
      fieldStream - The fields containing the values in the input stream to update the dimension with.
    • getFieldUpdate

      public int[] getFieldUpdate()
      Returns:
      Returns the fieldUpdate.
    • setFieldUpdate

      public void setFieldUpdate(int[] fieldUpdate)
      Parameters:
      fieldUpdate - The fieldUpdate to set.
    • getReturnType

      public int[] getReturnType()
      Returns:
      Returns the returnType.
    • setReturnType

      public void setReturnType(int[] returnType)
      Parameters:
      returnType - The returnType to set.
    • getKeyField

      public String getKeyField()
      Returns:
      Returns the keyField.
    • setKeyField

      public void setKeyField(String keyField)
      Parameters:
      keyField - The keyField to set.
    • getKeyLookup

      public String[] getKeyLookup()
      Returns:
      Returns the keyLookup.
    • setKeyLookup

      public void setKeyLookup(String[] keyLookup)
      Parameters:
      keyLookup - The keyLookup to set.
    • getKeyRename

      public String getKeyRename()
      Returns:
      Returns the keyRename.
    • setKeyRename

      public void setKeyRename(String keyRename)
      Parameters:
      keyRename - The keyRename to set.
    • getKeyStream

      public String[] getKeyStream()
      Returns:
      Returns the keyStream.
    • setKeyStream

      public void setKeyStream(String[] keyStream)
      Parameters:
      keyStream - The keyStream to set.
    • getMaxYear

      public int getMaxYear()
      Returns:
      Returns the maxYear.
    • setMaxYear

      public void setMaxYear(int maxYear)
      Parameters:
      maxYear - The maxYear to set.
    • getMinYear

      public int getMinYear()
      Returns:
      Returns the minYear.
    • setMinYear

      public void setMinYear(int minYear)
      Parameters:
      minYear - The minYear to set.
    • getSequenceName

      public String getSequenceName()
      Returns:
      Returns the sequenceName.
    • setSequenceName

      public void setSequenceName(String sequenceName)
      Parameters:
      sequenceName - The sequenceName to set.
    • getVersionField

      public String getVersionField()
      Returns:
      Returns the versionField.
    • setVersionField

      public void setVersionField(String versionField)
      Parameters:
      versionField - The versionField to set.
    • actualizeWithInjectedValues

      public void actualizeWithInjectedValues()
    • loadXML

      public void loadXML(Node stepnode, List<org.pentaho.di.core.database.DatabaseMeta> databases, org.pentaho.metastore.api.IMetaStore metaStore) throws org.pentaho.di.core.exception.KettleXMLException
      Description copied from interface: StepMetaInterface
      Load the values for this step from an XML Node
      Specified by:
      loadXML in interface StepMetaInterface
      Overrides:
      loadXML in class BaseStepMeta
      Parameters:
      stepnode - the Node to get the info from
      databases - The available list of databases to reference to
      metaStore - the metastore to optionally load external reference metadata from
      Throws:
      org.pentaho.di.core.exception.KettleXMLException - When an unexpected XML error occurred. (malformed etc.)
    • allocate

      public void allocate(int nrkeys, int nrfields)
    • clone

      public Object clone()
      Description copied from interface: StepMetaInterface
      Make an exact copy of this step, make sure to explicitly copy Collections etc.
      Specified by:
      clone in interface StepMetaInterface
      Overrides:
      clone in class BaseStepMeta
      Returns:
      an exact copy of this step
    • getUpdateType

      public static final int getUpdateType(boolean upd, String ty)
    • getUpdateType

      public static final String getUpdateType(boolean upd, int t)
    • getUpdateTypeCode

      public static final String getUpdateTypeCode(boolean upd, int t)
    • getStartDateAlternative

      public static final int getStartDateAlternative(String string)
    • getStartDateAlternativeCode

      public static final String getStartDateAlternativeCode(int alternative)
    • getStartDateAlternativeDesc

      public static final String getStartDateAlternativeDesc(int alternative)
    • getStartDateAlternativeCodes

      public static final String[] getStartDateAlternativeCodes()
    • getStartDateAlternativeDescriptions

      public static final String[] getStartDateAlternativeDescriptions()
    • isUpdateTypeWithoutArgument

      public static final boolean isUpdateTypeWithoutArgument(boolean update, int type)
    • setDefault

      public void setDefault()
      Description copied from interface: StepMetaInterface
      Set default values
      Specified by:
      setDefault in interface StepMetaInterface
    • getFields

      public void getFields(org.pentaho.di.core.row.RowMetaInterface row, String name, org.pentaho.di.core.row.RowMetaInterface[] info, StepMeta nextStep, org.pentaho.di.core.variables.VariableSpace space, Repository repository, org.pentaho.metastore.api.IMetaStore metaStore) throws org.pentaho.di.core.exception.KettleStepException
      Description copied from class: BaseStepMeta
      Gets the fields.
      Specified by:
      getFields in interface StepMetaInterface
      Overrides:
      getFields in class BaseStepMeta
      Parameters:
      row - the input row meta that is modified in this method to reflect the output row metadata of the step
      name - Name of the step to use as input for the origin field in the values
      info - Fields used as extra lookup information
      nextStep - the next step that is targeted
      space - the space The variable space to use to replace variables
      repository - the repository to use to load Kettle metadata objects impacting the output fields
      metaStore - the MetaStore to use to load additional external data or metadata impacting the output fields
      Throws:
      org.pentaho.di.core.exception.KettleStepException - the kettle step exception
    • getXML

      public String getXML()
      Description copied from class: BaseStepMeta
      Produces the XML string that describes this step's information.
      Specified by:
      getXML in interface StepMetaInterface
      Overrides:
      getXML in class BaseStepMeta
      Returns:
      String containing the XML describing this step.
    • readRep

      public void readRep(Repository rep, org.pentaho.metastore.api.IMetaStore metaStore, org.pentaho.di.repository.ObjectId id_step, List<org.pentaho.di.core.database.DatabaseMeta> databases) throws org.pentaho.di.core.exception.KettleException
      Description copied from interface: StepMetaInterface
      Read the steps information from a Kettle repository
      Specified by:
      readRep in interface StepMetaInterface
      Overrides:
      readRep in class BaseStepMeta
      Parameters:
      rep - The repository to read from
      metaStore - The MetaStore to read external information from
      id_step - The step ID
      databases - The databases to reference
      Throws:
      org.pentaho.di.core.exception.KettleException - When an unexpected error occurred (database, network, etc)
    • saveRep

      public void saveRep(Repository rep, org.pentaho.metastore.api.IMetaStore metaStore, org.pentaho.di.repository.ObjectId id_transformation, org.pentaho.di.repository.ObjectId id_step) throws org.pentaho.di.core.exception.KettleException
      Description copied from interface: StepMetaInterface
      Save the steps data into a Kettle repository
      Specified by:
      saveRep in interface StepMetaInterface
      Overrides:
      saveRep in class BaseStepMeta
      Parameters:
      rep - The Kettle repository to save to
      metaStore - the metaStore to optionally write to
      id_transformation - The transformation ID
      id_step - The step ID
      Throws:
      org.pentaho.di.core.exception.KettleException - When an unexpected error occurred (database, network, etc)
    • getMinDate

      public Date getMinDate()
    • getMaxDate

      public Date getMaxDate()
    • check

      public void check(List<org.pentaho.di.core.CheckResultInterface> remarks, TransMeta transMeta, StepMeta stepMeta, org.pentaho.di.core.row.RowMetaInterface prev, String[] input, String[] output, org.pentaho.di.core.row.RowMetaInterface info, org.pentaho.di.core.variables.VariableSpace space, Repository repository, org.pentaho.metastore.api.IMetaStore metaStore)
      Description copied from interface: StepMetaInterface
      Checks the settings of this step and puts the findings in a remarks List.
      Specified by:
      check in interface StepMetaInterface
      Overrides:
      check in class BaseStepMeta
      Parameters:
      remarks - The list to put the remarks in @see org.pentaho.di.core.CheckResult
      stepMeta - The stepMeta to help checking
      prev - The fields coming from the previous step
      input - The input step names
      output - The output step names
      info - The fields that are used as information by the step
      space - the variable space to resolve variable expressions with
      repository - the repository to use to load Kettle metadata objects impacting the output fields
      metaStore - the MetaStore to use to load additional external data or metadata impacting the output fields
    • getTableFields

      public org.pentaho.di.core.row.RowMetaInterface getTableFields()
      Description copied from class: BaseStepMeta
      Gets the table fields.
      Specified by:
      getTableFields in interface StepMetaInterface
      Overrides:
      getTableFields in class BaseStepMeta
      Returns:
      the table fields
    • getSQLStatements

      public org.pentaho.di.core.SQLStatement getSQLStatements(TransMeta transMeta, StepMeta stepMeta, org.pentaho.di.core.row.RowMetaInterface prev, Repository repository, org.pentaho.metastore.api.IMetaStore metaStore)
      Description copied from class: BaseStepMeta
      Standard method to return an SQLStatement object with SQL statements that the step needs in order to work correctly. This can mean "create table", "create index" statements but also "alter table ... add/drop/modify" statements.
      Specified by:
      getSQLStatements in interface StepMetaInterface
      Overrides:
      getSQLStatements in class BaseStepMeta
      Parameters:
      transMeta - TransInfo object containing the complete transformation
      stepMeta - StepMeta object containing the complete step
      prev - Row containing meta-data for the input fields (no data)
      repository - the repository to use to load Kettle metadata objects impacting the output fields
      metaStore - the MetaStore to use to load additional external data or metadata impacting the output fields
      Returns:
      The SQL Statements for this step. If nothing has to be done, the SQLStatement.getSQL() == null. @see SQLStatement
    • analyseImpact

      public void analyseImpact(List<DatabaseImpact> impact, TransMeta transMeta, StepMeta stepMeta, org.pentaho.di.core.row.RowMetaInterface prev, String[] input, String[] output, org.pentaho.di.core.row.RowMetaInterface info, Repository repository, org.pentaho.metastore.api.IMetaStore metaStore)
      Description copied from class: BaseStepMeta
      Each step must be able to report on the impact it has on a database, table field, etc.
      Specified by:
      analyseImpact in interface StepMetaInterface
      Overrides:
      analyseImpact in class BaseStepMeta
      Parameters:
      impact - The list of impacts @see org.pentaho.di.transMeta.DatabaseImpact
      transMeta - The transformation information
      stepMeta - The step information
      prev - The fields entering this step
      input - The previous step names
      output - The output step names
      info - The fields used as information by this step
      repository - the repository to use to load Kettle metadata objects impacting the output fields
      metaStore - the MetaStore to use to load additional external data or metadata impacting the output fields
    • getStep

      public StepInterface getStep(StepMeta stepMeta, StepDataInterface stepDataInterface, int cnr, TransMeta tr, Trans trans)
      Description copied from interface: StepMetaInterface
      Get the executing step, needed by Trans to launch a step.
      Specified by:
      getStep in interface StepMetaInterface
      Parameters:
      stepMeta - The step info
      stepDataInterface - the step data interface linked to this step. Here the step can store temporary data, database connections, etc.
      cnr - The copy nr to get
      tr - The transformation info
      trans - The launching transformation
    • getStepData

      public StepDataInterface getStepData()
      Description copied from interface: StepMetaInterface
      Get a new instance of the appropriate data class. This data class implements the StepDataInterface. It basically contains the persisting data that needs to live on, even if a worker thread is terminated.
      Specified by:
      getStepData in interface StepMetaInterface
      Returns:
      The appropriate StepDataInterface class.
    • getUsedDatabaseConnections

      public org.pentaho.di.core.database.DatabaseMeta[] getUsedDatabaseConnections()
      Description copied from class: BaseStepMeta
      This method returns all the database connections that are used by the step.
      Specified by:
      getUsedDatabaseConnections in interface StepMetaInterface
      Overrides:
      getUsedDatabaseConnections in class BaseStepMeta
      Returns:
      an array of database connections meta-data. Return an empty array if no connections are used.
    • getSchemaName

      public String getSchemaName()
      Description copied from interface: ProvidesDatabaseConnectionInformation
      Returns the schema name for this step.
      Specified by:
      getSchemaName in interface ProvidesDatabaseConnectionInformation
      Returns:
      the schemaName
    • getMissingDatabaseConnectionInformationMessage

      public String getMissingDatabaseConnectionInformationMessage()
      Description copied from interface: ProvidesDatabaseConnectionInformation
      Provides a way for this object to return a custom message when database connection information is incomplete or missing. If this returns null a default message will be displayed for missing information.
      Specified by:
      getMissingDatabaseConnectionInformationMessage in interface ProvidesDatabaseConnectionInformation
      Returns:
      A friendly message that describes that database connection information is missing and, potentially, why.
    • setSchemaName

      public void setSchemaName(String schemaName)
      Parameters:
      schemaName - the schemaName to set
    • getCacheSize

      public int getCacheSize()
      Returns:
      the cacheSize
    • setCacheSize

      public void setCacheSize(int cacheSize)
      Parameters:
      cacheSize - the cacheSize to set
    • isUsingStartDateAlternative

      public boolean isUsingStartDateAlternative()
      Returns:
      the usingStartDateAlternative
    • setUsingStartDateAlternative

      public void setUsingStartDateAlternative(boolean usingStartDateAlternative)
      Parameters:
      usingStartDateAlternative - the usingStartDateAlternative to set
    • getStartDateAlternative

      public int getStartDateAlternative()
      Returns:
      the startDateAlternative
    • setStartDateAlternative

      public void setStartDateAlternative(int startDateAlternative)
      Parameters:
      startDateAlternative - the startDateAlternative to set
    • getStartDateFieldName

      public String getStartDateFieldName()
      Returns:
      the startDateFieldName
    • setStartDateFieldName

      public void setStartDateFieldName(String startDateFieldName)
      Parameters:
      startDateFieldName - the startDateFieldName to set
    • isPreloadingCache

      public boolean isPreloadingCache()
      Returns:
      the preloadingCache
    • setPreloadingCache

      public void setPreloadingCache(boolean preloadingCache)
      Parameters:
      preloadingCache - the preloadingCache to set
    • useBatchUpdate

      public boolean useBatchUpdate()
      Returns:
      the useBatchUpdate
    • setUseBatchUpdate

      public void setUseBatchUpdate(boolean useBatchUpdate)
      Parameters:
      useBatchUpdate - the useBatchUpdate to set
    • getDatabaseTableFields

      protected org.pentaho.di.core.row.RowMetaInterface getDatabaseTableFields(org.pentaho.di.core.database.Database db, String schemaName, String tableName) throws org.pentaho.di.core.exception.KettleDatabaseException
      Throws:
      org.pentaho.di.core.exception.KettleDatabaseException
    • getRowMeta

      public org.pentaho.di.core.row.RowMeta getRowMeta(StepDataInterface stepData)
      Specified by:
      getRowMeta in interface ProvidesModelerMeta
    • getDatabaseFields

      public List<String> getDatabaseFields()
      Specified by:
      getDatabaseFields in interface ProvidesModelerMeta
    • getStreamFields

      public List<String> getStreamFields()
      Specified by:
      getStreamFields in interface ProvidesModelerMeta
    • normalizeAllocationFields

      public void normalizeAllocationFields()
    • afterInjectionSynchronization

      public void afterInjectionSynchronization()
      If we use injection we can have different arrays lengths. We need synchronize them for consistency behavior with UI