Class: AnalyticsOps::Reports::Definition
- Inherits:
-
Object
- Object
- AnalyticsOps::Reports::Definition
- Defined in:
- lib/analytics_ops/reports/definition.rb,
sig/analytics_ops.rbs
Overview
Immutable, gem-owned description of one Data API query.
Constant Summary collapse
- KINDS =
%w[standard realtime].freeze
- API_NAME =
/\A[a-z][a-zA-Z0-9_]*(?::[a-zA-Z][a-zA-Z0-9_]*)?\z/- REPORT_NAME =
/\A[a-z][a-z0-9_]{0,63}\z/- RANGE_NAME =
/\A[a-z][a-z0-9_]{0,39}\z/- ABSOLUTE_DATE =
/\A\d{4}-\d{2}-\d{2}\z/- RELATIVE_DATE =
/\A(\d{1,4})daysAgo\z/- MATCH_TYPES =
%w[exact begins_with ends_with contains full_regexp partial_regexp].freeze
- NUMERIC_OPERATIONS =
%w[equal less_than less_than_or_equal greater_than greater_than_or_equal].freeze
- GROUP_FILTERS =
%w[and or not].freeze
- MAX_FILTER_DEPTH =
8- MAX_FILTER_CHILDREN =
20- MAX_STANDARD_LIMIT =
250_000- MAX_REALTIME_LIMIT =
100_000- MAX_LIMIT =
MAX_STANDARD_LIMIT- INT64_RANGE =
(-(2**63))..((2**63) - 1)
Instance Attribute Summary collapse
-
#date_ranges ⇒ Array[record]
readonly
Returns the value of attribute date_ranges.
-
#dimension_filter ⇒ record?
readonly
Returns the value of attribute dimension_filter.
-
#dimensions ⇒ Array[String]
readonly
Returns the value of attribute dimensions.
-
#kind ⇒ String
readonly
Returns the value of attribute kind.
-
#limit ⇒ Integer
readonly
Returns the value of attribute limit.
-
#metric_filter ⇒ record?
readonly
Returns the value of attribute metric_filter.
-
#metrics ⇒ Array[String]
readonly
Returns the value of attribute metrics.
-
#name ⇒ String
readonly
Returns the value of attribute name.
-
#offset ⇒ Integer
readonly
Returns the value of attribute offset.
-
#order_bys ⇒ Array[record]
readonly
Returns the value of attribute order_bys.
Instance Method Summary collapse
-
#initialize(name:, kind:, dimensions:, metrics:, date_ranges: [], dimension_filter: nil, metric_filter: nil, order_bys: [], offset: 0, limit: 100) ⇒ Definition
constructor
A new instance of Definition.
- #realtime? ⇒ Boolean
- #to_h ⇒ record
- #with_date_ranges(value) ⇒ Definition
- #with_pagination(offset:, limit:) ⇒ Definition
Constructor Details
#initialize(name:, kind:, dimensions:, metrics:, date_ranges: [], dimension_filter: nil, metric_filter: nil, order_bys: [], offset: 0, limit: 100) ⇒ Definition
Returns a new instance of Definition.
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/analytics_ops/reports/definition.rb', line 28 def initialize(name:, kind:, dimensions:, metrics:, date_ranges: [], dimension_filter: nil, metric_filter: nil, order_bys: [], offset: 0, limit: 100) @name = validate_name(name) @kind = validate_kind(kind) @dimensions = api_names(dimensions, "dimensions", minimum: 0, maximum: realtime_kind?(kind) ? 4 : 9) @metrics = api_names(metrics, "metrics", minimum: 1, maximum: 10) @date_ranges = ranges(date_ranges) @dimension_filter = filter_expression(dimension_filter, type: :dimension) @metric_filter = filter_expression(metric_filter, type: :metric) @order_bys = orders(order_bys) @offset = integer(offset, "offset", minimum: 0, maximum: 1_000_000_000) maximum_limit = realtime? ? MAX_REALTIME_LIMIT : MAX_STANDARD_LIMIT @limit = integer(limit, "limit", minimum: 1, maximum: maximum_limit) validate_shape! freeze end |
Instance Attribute Details
#date_ranges ⇒ Array[record] (readonly)
Returns the value of attribute date_ranges.
25 26 27 |
# File 'lib/analytics_ops/reports/definition.rb', line 25 def date_ranges @date_ranges end |
#dimension_filter ⇒ record? (readonly)
Returns the value of attribute dimension_filter.
25 26 27 |
# File 'lib/analytics_ops/reports/definition.rb', line 25 def dimension_filter @dimension_filter end |
#dimensions ⇒ Array[String] (readonly)
Returns the value of attribute dimensions.
25 26 27 |
# File 'lib/analytics_ops/reports/definition.rb', line 25 def dimensions @dimensions end |
#kind ⇒ String (readonly)
Returns the value of attribute kind.
25 26 27 |
# File 'lib/analytics_ops/reports/definition.rb', line 25 def kind @kind end |
#limit ⇒ Integer (readonly)
Returns the value of attribute limit.
25 26 27 |
# File 'lib/analytics_ops/reports/definition.rb', line 25 def limit @limit end |
#metric_filter ⇒ record? (readonly)
Returns the value of attribute metric_filter.
25 26 27 |
# File 'lib/analytics_ops/reports/definition.rb', line 25 def metric_filter @metric_filter end |
#metrics ⇒ Array[String] (readonly)
Returns the value of attribute metrics.
25 26 27 |
# File 'lib/analytics_ops/reports/definition.rb', line 25 def metrics @metrics end |
#name ⇒ String (readonly)
Returns the value of attribute name.
25 26 27 |
# File 'lib/analytics_ops/reports/definition.rb', line 25 def name @name end |
#offset ⇒ Integer (readonly)
Returns the value of attribute offset.
25 26 27 |
# File 'lib/analytics_ops/reports/definition.rb', line 25 def offset @offset end |
#order_bys ⇒ Array[record] (readonly)
Returns the value of attribute order_bys.
25 26 27 |
# File 'lib/analytics_ops/reports/definition.rb', line 25 def order_bys @order_bys end |
Instance Method Details
#realtime? ⇒ Boolean
45 46 47 |
# File 'lib/analytics_ops/reports/definition.rb', line 45 def realtime? kind == "realtime" end |
#to_h ⇒ record
79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/analytics_ops/reports/definition.rb', line 79 def to_h { "name" => name, "kind" => kind, "dimensions" => dimensions, "metrics" => metrics, "date_ranges" => date_ranges, "dimension_filter" => dimension_filter, "metric_filter" => metric_filter, "order_bys" => order_bys, "offset" => offset, "limit" => limit } end |
#with_date_ranges(value) ⇒ Definition
49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/analytics_ops/reports/definition.rb', line 49 def with_date_ranges(value) self.class.new( name:, kind:, dimensions:, metrics:, date_ranges: value, dimension_filter:, metric_filter:, order_bys:, offset:, limit: ) end |
#with_pagination(offset:, limit:) ⇒ Definition
64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/analytics_ops/reports/definition.rb', line 64 def with_pagination(offset:, limit:) self.class.new( name:, kind:, dimensions:, metrics:, date_ranges:, dimension_filter:, metric_filter:, order_bys:, offset:, limit: ) end |