class GrafanaReporter::Asciidoctor::SqlValueInlineMacro
Implements the hook
grafana_sql_value:<datasource_id>[<options>]
Returns the first value of the resulting SQL query.
Used document parameters¶ ↑
grafana_default_instance
- name of grafana instance, 'default' if not specified
from
- 'from' time for the sql query
to
- 'to' time for the sql query
All other variables starting with var-
will be used to replace grafana templating strings in the given SQL query.
Supported options¶ ↑
sql
- sql statement (mandatory)
instance
- name of grafana instance, 'default' if not specified
from
- 'from' time for the sql query
to
- 'to' time for the sql query
format
- see {AbstractQuery#format_columns}
replace_values
- see {AbstractQuery#replace_values}
filter_columns
- see {AbstractQuery#filter_columns}
Public Instance Methods
build_demo_entry(panel)
click to toggle source
@see ProcessorMixin#build_demo_entry
# File lib/grafana_reporter/asciidoctor/sql_value_inline_macro.rb, line 71 def build_demo_entry(panel) return nil unless panel return nil unless panel.model['type'] == 'singlestat' ref_id = nil panel.model['targets'].each do |item| if !item['hide'] && !panel.query(item['refId']).to_s.empty? ref_id = item['refId'] break end end return nil unless ref_id "grafana_sql_value:#{panel.dashboard.grafana.datasource_by_name(panel.model['datasource']).id}"\ "[sql=\"#{panel.query(ref_id).gsub(/"/, '\"').gsub("\n", ' ').gsub(/\\/, '\\\\')}\",from=\"now-1h\","\ 'to="now"]' end
process(parent, target, attrs)
click to toggle source
@see GrafanaReporter::Asciidoctor::SqlFirstValueQuery
# File lib/grafana_reporter/asciidoctor/sql_value_inline_macro.rb, line 41 def process(parent, target, attrs) return if @report.cancel @report.next_step instance = attrs['instance'] || parent.document.attr('grafana_default_instance') || 'default' attrs['result_type'] = 'sql_value' @report.logger.debug("Processing SqlValueInlineMacro (instance: #{instance}, datasource: #{target},"\ " sql: #{attrs['sql']})") begin # catch properly if datasource could not be identified query = QueryValueQuery.new(@report.grafana(instance), variables: build_attribute_hash(parent.document.attributes, attrs)) query.datasource = @report.grafana(instance).datasource_by_id(target) query.raw_query = attrs['sql'] create_inline(parent, :quoted, query.execute) rescue Grafana::GrafanaError => e @report.logger.error(e.message) create_inline(parent, :quoted, e.message) rescue GrafanaReporterError => e @report.logger.error(e.message) create_inline(parent, :quoted, e.message) rescue StandardError => e @report.logger.fatal(e.message) create_inline(parent, :quoted, e.message) end end