class Olap::Xmla::Client
Attributes
catalog[R]
client[R]
data_source[R]
Public Class Methods
new(server, data_source, catalog, options)
click to toggle source
# File lib/olap/xmla/client.rb, line 8 def initialize server, data_source, catalog, options @catalog = catalog @data_source = data_source @verbose = options[:verbose] @client = Savon.client do endpoint server namespace "urn:schemas-microsoft-com:xml-analysis" open_timeout (options[:open_timeout] || 60) read_timeout (options[:read_timeout] || 300) end end
Public Instance Methods
batch(mdx_requests, parameters = {})
click to toggle source
Executes multiple MDX queries as a batch
Arguments:
* +mdx_requests+ - Collection of MDX requests * +parameters+ - Map of parameters to substitute in MDX request, optional
# File lib/olap/xmla/client.rb, line 27 def batch mdx_requests, parameters = {} mdx_requests.collect{|mdx| request mdx, parameters } end
request(mdx_request, parameters = {})
click to toggle source
Execute MDX queries, substituting parameters in the query
Arguments:
* +mdx_request+ - MDX request as a string, required * +parameters+ - Map of parameters to substitute in MDX request, optional
Example:
client.request 'SET [~ROWS_Date] AS {[DateTime].[Date].[Date].[%DATE%]}', {'%DATE%' => '20150530'} will execute actual MDX: SET [~ROWS_Date] AS {[DateTime].[Date].[Date].[20150530]}
# File lib/olap/xmla/client.rb, line 45 def request mdx_request, parameters = {} mdx = mdx_request.clone parameters.each{|k,v| mdx.gsub!(k,v) } puts mdx if @verbose ops = client.operation('Execute') p = { 'wsdl:PropertyList' => {'wsdl:DataSourceInfo' => data_source, 'wsdl:Catalog' => catalog, 'wsdl:Format' => 'Multidimensional', 'wsdl:AxisFormat'=> 'TupleFormat'} } r = ops.call( message: {'wsdl:Command' => { 'wsdl:Statement' => mdx}, 'wsdl:Properties' => p }) unless r.success? raise "Error executing #{mdx} in #{catalog} #{data_source}: #{r.http_error} #{r.soap_fault}" end Olap::Xmla::Response.new r.body[:execute_response][:return][:root], mdx end