Class: Olap::Xmla::Client
- Inherits:
-
Object
- Object
- Olap::Xmla::Client
- Defined in:
- lib/olap/xmla/client.rb
Instance Attribute Summary collapse
-
#catalog ⇒ Object
readonly
Returns the value of attribute catalog.
-
#client ⇒ Object
readonly
Returns the value of attribute client.
-
#data_source ⇒ Object
readonly
Returns the value of attribute data_source.
Instance Method Summary collapse
-
#batch(mdx_requests, parameters = {}) ⇒ Object
Executes multiple MDX queries as a batch.
-
#initialize(server, data_source, catalog, options) ⇒ Client
constructor
A new instance of Client.
-
#request(mdx_request, parameters = {}) ⇒ Object
Execute MDX queries, substituting parameters in the query.
Constructor Details
#initialize(server, data_source, catalog, options) ⇒ Client
Returns a new instance of Client.
8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/olap/xmla/client.rb', line 8 def initialize server, data_source, catalog, @catalog = catalog @data_source = data_source @verbose = [:verbose] @client = Savon.client do endpoint server namespace "urn:schemas-microsoft-com:xml-analysis" open_timeout ([:open_timeout] || 60) read_timeout ([:read_timeout] || 300) end end |
Instance Attribute Details
#catalog ⇒ Object (readonly)
Returns the value of attribute catalog.
6 7 8 |
# File 'lib/olap/xmla/client.rb', line 6 def catalog @catalog end |
#client ⇒ Object (readonly)
Returns the value of attribute client.
6 7 8 |
# File 'lib/olap/xmla/client.rb', line 6 def client @client end |
#data_source ⇒ Object (readonly)
Returns the value of attribute data_source.
6 7 8 |
# File 'lib/olap/xmla/client.rb', line 6 def data_source @data_source end |
Instance Method Details
#batch(mdx_requests, parameters = {}) ⇒ Object
Executes multiple MDX queries as a batch
Arguments:
* +mdx_requests+ - Collection of MDX requests
* +parameters+ - Map of parameters to substitute in MDX request, optional
27 28 29 30 31 |
# 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 = {}) ⇒ Object
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]}
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# 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 |