class Twb::Analysis::DataSources::ExtractsAnalyzer

Attributes

localEmit[RW]

Public Class Methods

new(**args) click to toggle source
# File lib/twb/analysis/DataSources/extractsanalyzer.rb, line 29
def initialize(**args)
  @args      = args
  @recordDir = !@args.nil? && @args[:recordDir] == true
  @ttdocdir  = @args[:ttdocdir]
  @csvAdd    = !@args.nil? && args[:csvMode] == :add
  @csvMode   = @csvAdd ? 'a' : 'w'
  init
  @funcdoc   = {:class=>self.class, :blurb=>'Analyze Extracts', :description=>'Identifies Data Source Extracts & records relevant data.',}
  #--
  docFileName  = docFile('Extracts.csv')
  @extractsCSV = CSV.open(docFileName,@csvMode)
  #--
    # <extract count='-1' enabled='true' units='records'>
    #   <connection access_mode='readonly'
    #               authentication='auth-none'
    #               author-locale='en_US'
    #               class='hyper'
    #               dbname='C:/tech/Tableau/Tableau Tools/Ruby/gems/twb/lib/twb/analysis/datasources/data/Sample - World Bank Indicators (Excel).hyper'
    #               default-settings='yes'
    #               schema='Extract'
    #               sslmode=''
    #               update-time='05/17/2019 10:39:21 PM'
    #               username='tableau_internal_user'>
    #     <relation name='Extract' table='[Extract].[Extract]' type='table' />
    #     <refresh>
    #       <refresh-event add-from-file-path='Sample - World Bank Indicators (Excel)' increment-value='%null%' refresh-type='create' rows-inserted='2354' timestamp-start='2019-05-17 22:39:21.474' />
    #     </refresh>
    #   </connection>
    # </extract>
    #--
  unless @csvAdd
    @csvHeader = [ 'Rec #', 
                   'Workbook', 
                   'Data Source',
                   'Enabled',
                   'Units',
                   'Access Mode',
                   'Authentication',
                   'Class',
                   'Extract Name (FQ)',
                   'Extract Name',
                   'Extract Directory',
                   'Default Settings',
                   'Schema',
                   'SSL Mode',
                   'Updated (UTC)',
                   'User Name'
                 ]
    if @recordDir
      @csvHeader.push 'Workbook Dir'
    end
    @extractsCSV << @csvHeader
  end
  addDocFile @extractsCSV, docFileName, "Workbooks and their Data Source Extracts."
  #--
  @twbCount     = 0
  @dsCount      = 0
  @extractCount = 0
  @recNum       = 0
end

Public Instance Methods

metrics() click to toggle source
# File lib/twb/analysis/DataSources/extractsanalyzer.rb, line 90
def metrics
  {
    '# of Data Sources' => @dsCount,
    '# of Extracts'     => @extractCount
  }
end
parseDataSources() click to toggle source
# File lib/twb/analysis/DataSources/extractsanalyzer.rb, line 107
def parseDataSources
  @dataSources = @twb.datasources
  @dataSources.each do |ds|
    @dsCount += 1
    emit "DATA SOURCE:: #{ds.name}"
    dsNode = ds.node
    exnode = ds.node.at_xpath('./extract')
    unless exnode.nil?
      cnNode = exnode.at_xpath('./connection')
      # emit true, cnNode
      unless cnNode.nil?
        @extractCount += 1
        dbName = cnNode['dbname']
        # emit true, "cnNode['dbname'] :: #{cnNode['dbname']}"
        # unless dbName.nil?
          exName = File.basename dbName
          exDir  = File.dirname  dbName
        # end
        recordCSV [ @twbName,
                    ds.uiname,
                    exnode['enabled'],
                    exnode['units'],
                    cnNode['access_mode'],
                    cnNode['authentication'],
                    cnNode['class'],
                    dbName,
                    exName,
                    exDir,
                    cnNode['default-settings'],
                    cnNode['schema'],
                    cnNode['sslmode'],
                    cnNode['update-time'],
                    cnNode['username']
                  ]
      end
    end
  end
end
processTWB(twb) click to toggle source
# File lib/twb/analysis/DataSources/extractsanalyzer.rb, line 97
def processTWB twb
   @twb     = twb
   @twbName = @twb.name
   @twbDir  = @twb.dir
   emit "   -- #{@twbName}"
   @twbCount += 1
   parseDataSources
   finis
end

Private Instance Methods

recordCSV(record) click to toggle source

<extract count='-1' enabled='true' units='records'>

<connection access_mode='readonly' 
            authentication='auth-none' 
            author-locale='en_US' 
            class='hyper' 
            dbname='C:/tech/Tableau/Tableau Tools/Ruby/gems/twb/lib/twb/analysis/datasources/data/Sample - World Bank Indicators (Excel).hyper' 
            default-settings='yes' 
            schema='Extract' 
            sslmode='' 
            update-time='05/17/2019 10:39:21 PM' 
            username='tableau_internal_user'>
  <relation name='Extract' table='[Extract].[Extract]' type='table' />
  <refresh>
    <refresh-event add-from-file-path='Sample - World Bank Indicators (Excel)' increment-value='%null%' refresh-type='create' rows-inserted='2354' timestamp-start='2019-05-17 22:39:21.474' />
  </refresh>
</connection>

</extract>

# File lib/twb/analysis/DataSources/extractsanalyzer.rb, line 186
def recordCSV record
  numberedRec = [@recNum+=1] + record
  if @recordDir
    @extractsCSV  << numberedRec.push(@twbDir)
  else
    @extractsCSV  << numberedRec
  end
end