fluent-plugin-amplitude 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/README.md +9 -1
- data/fluent-plugin-amplitude.gemspec +4 -4
- data/lib/fluent/plugin/out_amplitude.rb +19 -3
- data/spec/out_amplitude_spec.rb +9 -1
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1d93878883ecfd0b74360d52da210ee1914685fa
|
4
|
+
data.tar.gz: 537a7ead298423f76e5dbaecb13487a7df983101
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2a155ce833996a533cb9e1ded2e07af0efd642b40da14bff03795b837ac7739cbccd48d9b36d876548685551ebc7632f9461ceffe615b8dcb3a22ff976f630bd
|
7
|
+
data.tar.gz: 2c9bf89150f181a1fcae00fd61f43292dd5fc7504e4302fe7cafcfb8d0175ecb44c9b05a35af970fcadc534a5240519603c9a4856b91ec3aff26a43cc6f35f3b
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -48,12 +48,20 @@ You must set at least one of `user_id_key` and `device_id_key`. They will be use
|
|
48
48
|
#### time_key
|
49
49
|
If set, `time_key` will be used to pull out a timestamp field to set as `time` in the Amplitude API request. This can be an array, the first matching key will be used.
|
50
50
|
|
51
|
+
#### revenue_properties
|
52
|
+
|
53
|
+
`revenue_properties` are a fixed set of properties that Amplitude looks for in order to determine which events are revenue events (see Amplitude's [revenue tracking guide](https://amplitude.zendesk.com/hc/en-us/articles/115003116888-Tracking-Revenue) and [HTTP API documentation](https://amplitude.zendesk.com/hc/en-us/articles/204771828#keys-for-the-event-argument) for more information). `revenue_properties` are set as top-level properties on the API call. The `revenue_properties` we currently support are:
|
54
|
+
* quantity
|
55
|
+
* price
|
56
|
+
* revenue
|
57
|
+
* revenue_type
|
58
|
+
|
51
59
|
#### user_properties and event_properties
|
52
60
|
You can optionally specify lists of `user_properties` and `event_properties` to pull from the record.
|
53
61
|
|
54
62
|
If `user_properties` are specified, only those properties will be included as `user_properties` in the Amplitude API call. Otherwise no `user_properties` will be sent.
|
55
63
|
|
56
|
-
If `event_properties` are specified, only those properties will be included as `event_properties` in the Amplitude API call.
|
64
|
+
If `event_properties` are specified, only those properties will be included as `event_properties` in the Amplitude API call. If no `event_properties` are specified, then every field with the exception of `user_id_key`, `device_id_key`, all `revenue_properties`, and anything specified in `user_properties`, will be sent as `event_properties` in the Amplitude API call.
|
57
65
|
|
58
66
|
#### event type
|
59
67
|
The event_type is the tag. To modify this, fluent-plugin-amplitude includes the `HandleTagNameMixin` mixin which allows the following options:
|
@@ -4,9 +4,9 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = 'fluent-plugin-amplitude'
|
7
|
-
spec.version = '0.
|
8
|
-
spec.authors = ['
|
9
|
-
spec.email = ['
|
7
|
+
spec.version = '0.2.0'
|
8
|
+
spec.authors = ['Change.org']
|
9
|
+
spec.email = ['tech_ops@change.org']
|
10
10
|
spec.summary = 'Fluentd plugin to output event data to Amplitude'
|
11
11
|
spec.description = 'Fluentd plugin to output event data to Amplitude'
|
12
12
|
spec.homepage = 'https://github.com/change/fluent-plugin-amplitude'
|
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
|
19
19
|
spec.add_runtime_dependency 'fluentd', '>= 0.10.55'
|
20
20
|
spec.add_runtime_dependency 'amplitude-api', '~> 0.0.9'
|
21
|
-
spec.add_runtime_dependency 'msgpack', '~> 0'
|
21
|
+
spec.add_runtime_dependency 'msgpack', '~> 1.0'
|
22
22
|
|
23
23
|
spec.add_development_dependency 'rake', '~> 11.3'
|
24
24
|
spec.add_development_dependency 'rspec', '~> 3.5'
|
@@ -7,6 +7,13 @@ module Fluent
|
|
7
7
|
include Fluent::HandleTagNameMixin
|
8
8
|
include FakeActiveSupport
|
9
9
|
|
10
|
+
REVENUE_PROPERTIES = %w(
|
11
|
+
price
|
12
|
+
quantity
|
13
|
+
revenue
|
14
|
+
revenue_type
|
15
|
+
).freeze
|
16
|
+
|
10
17
|
config_param :api_key, :string, secret: true
|
11
18
|
config_param :device_id_key, :array, default: nil
|
12
19
|
config_param :user_id_key, :array, default: nil
|
@@ -16,8 +23,8 @@ module Fluent
|
|
16
23
|
config_param :properties_blacklist, :array, default: nil
|
17
24
|
config_param :events_whitelist, :array, default: nil
|
18
25
|
config_param :events_blacklist, :array, default: nil
|
19
|
-
|
20
|
-
end
|
26
|
+
|
27
|
+
class AmplitudeError < StandardError; end
|
21
28
|
|
22
29
|
def initialize
|
23
30
|
super
|
@@ -44,6 +51,7 @@ module Fluent
|
|
44
51
|
filter_properties_blacklist!(record)
|
45
52
|
extract_user_and_device!(amplitude_hash, record)
|
46
53
|
set_time!(amplitude_hash, record)
|
54
|
+
extract_revenue_properties!(amplitude_hash, record)
|
47
55
|
extract_user_properties!(amplitude_hash, record)
|
48
56
|
extract_event_properties!(amplitude_hash, record)
|
49
57
|
|
@@ -119,6 +127,14 @@ module Fluent
|
|
119
127
|
log.info("failed to parse #{time_string}: #{e.message}")
|
120
128
|
end
|
121
129
|
|
130
|
+
def extract_revenue_properties!(amplitude_hash, record)
|
131
|
+
REVENUE_PROPERTIES.each do |prop|
|
132
|
+
next if record[prop].nil?
|
133
|
+
|
134
|
+
amplitude_hash[prop.to_sym] = record.delete(prop)
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
122
138
|
def extract_user_properties!(amplitude_hash, record)
|
123
139
|
# if user_properties are specified, pull them off of the record
|
124
140
|
return unless @user_properties
|
@@ -132,7 +148,7 @@ module Fluent
|
|
132
148
|
|
133
149
|
def extract_event_properties!(amplitude_hash, record)
|
134
150
|
# if event_properties are specified, pull them off of the record
|
135
|
-
# otherwise, use the remaining record (minus any user_properties)
|
151
|
+
# otherwise, use the remaining record (minus any revenue_properties and user_properties)
|
136
152
|
amplitude_hash[:event_properties] = begin
|
137
153
|
if @event_properties
|
138
154
|
record.select do |k, _v|
|
data/spec/out_amplitude_spec.rb
CHANGED
@@ -42,7 +42,11 @@ describe Fluent::AmplitudeOutput do
|
|
42
42
|
'last_name' => 'Weir',
|
43
43
|
'state' => 'CA',
|
44
44
|
'current_source' => 'fb_share',
|
45
|
-
'recruiter_id' => 710
|
45
|
+
'recruiter_id' => 710,
|
46
|
+
'revenue_type' => 'sustainer',
|
47
|
+
'quantity' => 2,
|
48
|
+
'price' => 10.05,
|
49
|
+
'revenue' => 20.10,
|
46
50
|
}
|
47
51
|
end
|
48
52
|
|
@@ -51,6 +55,10 @@ describe Fluent::AmplitudeOutput do
|
|
51
55
|
event_type: tag,
|
52
56
|
user_id: 42,
|
53
57
|
device_id: 'e6153b00-85d8-11e6-b1bc-43192d1e493f',
|
58
|
+
price: 10.05,
|
59
|
+
quantity: 2,
|
60
|
+
revenue: 20.10,
|
61
|
+
revenue_type: 'sustainer',
|
54
62
|
user_properties: {
|
55
63
|
first_name: 'Bobby',
|
56
64
|
last_name: 'Weir'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-amplitude
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Change.org
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-06-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fluentd
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
47
|
+
version: '1.0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
54
|
+
version: '1.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -130,7 +130,7 @@ dependencies:
|
|
130
130
|
version: 0.44.1
|
131
131
|
description: Fluentd plugin to output event data to Amplitude
|
132
132
|
email:
|
133
|
-
-
|
133
|
+
- tech_ops@change.org
|
134
134
|
executables: []
|
135
135
|
extensions: []
|
136
136
|
extra_rdoc_files: []
|
@@ -164,7 +164,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
164
164
|
version: '0'
|
165
165
|
requirements: []
|
166
166
|
rubyforge_project:
|
167
|
-
rubygems_version: 2.4.5
|
167
|
+
rubygems_version: 2.4.5
|
168
168
|
signing_key:
|
169
169
|
specification_version: 4
|
170
170
|
summary: Fluentd plugin to output event data to Amplitude
|