-
Notifications
You must be signed in to change notification settings - Fork 11
/
declaration.py
227 lines (188 loc) · 9.81 KB
/
declaration.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
#!/usr/bin/env python3
"""
declaration.py
This file is a part of the AppMetrica.
Copyright 2017 YANDEX
You may not use this file except in compliance with the License.
You may obtain a copy of the License at:
https://yandex.com/legal/metrica_termsofuse/
"""
from typing import List
from .helpers import *
from .db_types import *
from .converters import *
from .source import Source
_system_defined_fields = [
system_defined("app_id", db_uint64("AppID")),
system_defined("load_datetime", db_datetime("LoadDateTime")),
] # type: List[Field]
_device_fields = [
optional("ios_ifa", db_string("IFA")),
optional("ios_ifv", db_string("IFV")),
optional("google_aid", db_string("GoogleAID")),
optional("windows_aid", db_string("WindowsAID")),
optional("os_name", db_string("OSName")),
optional("os_version", db_string("OSVersion")),
optional("device_manufacturer", db_string("Manufacturer")),
optional("device_model", db_string("Model")),
optional("device_type", db_string("DeviceType")),
] # type: List[Field]
_located_device_fields = _device_fields + [
optional("country_iso_code", db_string("Country")),
optional("city", db_string("City")),
] # type: List[Field]
_sdk_device_fields = _located_device_fields + [
required("appmetrica_device_id", db_string("DeviceID")),
optional("device_locale", db_string("Locale")),
optional("connection_type", db_string("ConnectionType")),
optional("operator_name", db_string("OperatorName")),
optional("mcc", db_string("MCC")),
optional("mnc", db_string("MNC")),
] # type: List[Field]
_app_fields = [
optional("app_version_name", db_string("AppVersionName")),
optional("app_package_name", db_string("AppPackageName")),
] # type: List[Field]
_core_click_fields = [
optional("publisher_id", db_string("PublisherID")),
optional("tracking_id", db_string("TrackingID")),
optional("publisher_name", db_string("PublisherName")),
optional("tracker_name", db_string("TrackerName")),
required("click_timestamp", db_uint64("ClickTimestamp")),
required("click_date", db_date("ClickDate"), timestamp_to_date("click_timestamp")),
optional("click_datetime", db_datetime("ClickDateTime"), timestamp_to_datetime("click_timestamp")),
optional("click_ipv6", db_string("ClickIPV6")),
optional("click_url_parameters", db_string("ClickURLParameters")),
optional("click_id", db_string("ClickID")),
optional("click_user_agent", db_string("ClickUserAgent")),
] # type: List[Field]
_click_fields = _system_defined_fields + _device_fields + _core_click_fields
_click_keys = [
"publisher_id",
"tracking_id",
]
_clicks_source = Source("clicks", "clicks", "click_date", "click_ipv6",
_click_keys, False, _click_fields)
_core_installation_fields = [
optional("match_type", db_string("MatchType")),
required("install_timestamp", db_uint64("InstallTimestamp")),
optional("install_datetime", db_datetime("InstallDateTime"), timestamp_to_datetime("install_timestamp")),
optional("install_ipv6", db_string("InstallIPV6")),
]
_installation_fields = _core_click_fields + _located_device_fields + _app_fields + _core_installation_fields + [
required("install_date", db_date("InstallDate"), timestamp_to_date("install_timestamp")),
optional("install_receive_timestamp", db_uint64("ReceiveTimestamp")),
optional("is_reinstallation", db_bool("IsReinstallation"), str_to_bool('is_reinstallation'), False),
] # type: List[Field]
_installation_keys = _click_keys + [
"match_type",
]
_installations_source = Source("installations", "installations_all", "install_date", "install_ipv6",
_installation_keys, False, _installation_fields)
_postback_fields = _core_click_fields + _core_installation_fields + _device_fields + _app_fields + [
optional("event_name", db_string("EventName")),
optional("conversion_timestamp", db_uint64("ConversionTimestamp")),
optional("conversion_datetime", db_datetime("ConversionDateTime"), timestamp_to_datetime("conversion_timestamp")),
optional("cost_model", db_string("CostModel")),
optional("postback_url", db_string("PostbackUrl")),
optional("postback_url_parameters", db_string("PostbackUrlParameters")),
optional("notifying_status", db_string("NotifyingStatus")),
optional("response_code", db_int16("ResponseCode")),
optional("response_body", db_string("ReponseBody")),
required("attempt_timestamp", db_uint64("AttemptTimestamp")),
required("attempt_date", db_date("AttemptDate"), timestamp_to_date("attempt_timestamp")),
optional("attempt_datetime", db_datetime("AttemptDateTime"), timestamp_to_datetime("attempt_timestamp")),
] # type: List[Field]
_postback_key = [
"postback_type",
"response_code",
]
_postbacks_source = Source("postbacks", "postbacks", "attempt_date", None,
_postback_key, False, _postback_fields)
_event_fields = _system_defined_fields + _sdk_device_fields + _app_fields + [
required("event_timestamp", db_uint64("EventTimestamp")),
optional("event_name", db_string("EventName")),
optional("event_json", db_string("EventParameters")),
optional("event_receive_timestamp", db_uint64("ReceiveTimestamp")),
required("event_date", db_date("EventDate"), timestamp_to_date("event_timestamp")),
optional("event_datetime", db_datetime("EventDateTime"), timestamp_to_datetime("event_timestamp")),
optional("event_receive_date", db_date("ReceiveDate"), timestamp_to_date("event_receive_timestamp")),
optional("event_receive_datetime", db_datetime("ReceiveDateTime"), timestamp_to_datetime("event_receive_timestamp")),
] # type: List[Field]
_event_key = [
"event_name",
"device_id_hash",
]
_events_source = Source("events", "events", "event_date", "appmetrica_device_id",
_event_key, False, _event_fields)
_push_token_fields = _sdk_device_fields + _app_fields + [
optional("token", db_string("Token")),
required("token_timestamp", db_uint64("TokenTimestamp")),
required("token_date", db_date("TokenDate"), timestamp_to_date("token_timestamp")),
optional("token_datetime", db_datetime("TokenDateTime"), timestamp_to_datetime("token_timestamp")),
optional("token_receive_timestamp", db_uint64("ReceiveTimestamp")),
optional("token_receive_date", db_date("ReceiveDate"), timestamp_to_date("token_receive_timestamp")),
optional("token_receive_datetime", db_datetime("ReceiveDateTime"), timestamp_to_datetime("token_receive_timestamp")),
] # type: List[Field]
_push_token_key = [
"device_id_hash",
]
_push_tokens_source = Source("push_tokens", "push_tokens", "token_date", "appmetrica_device_id",
_push_token_key, True, _push_token_fields)
_crash_fields = _system_defined_fields + _sdk_device_fields + _app_fields + [
required("crash_timestamp", db_uint64("CrashTimestamp")),
required("crash_receive_timestamp", db_uint64("ReceiveTimestamp")),
optional("crash", db_string("Crash")),
optional("crash_id", db_string("CrashID")),
optional("crash_group_id", db_string("CrashGroupID")),
required("crash_date", db_date("CrashDate"), timestamp_to_date("crash_timestamp")),
optional("crash_datetime", db_datetime("CrashDateTime"), timestamp_to_datetime("crash_timestamp")),
optional("crash_receive_date", db_date("ReceiveDate"), timestamp_to_date("crash_receive_timestamp")),
optional("crash_receive_datetime", db_datetime("ReceiveDateTime"), timestamp_to_datetime("crash_receive_timestamp")),
] # type: List[Field]
_crash_key = [
"crash_id",
"crash_group_id",
"device_id_hash",
]
_crashes_source = Source("crashes", "crashes", "crash_date", "appmetrica_device_id",
_crash_key, False, _crash_fields)
_error_fields = _system_defined_fields + _sdk_device_fields + _app_fields + [
required("error_timestamp", db_uint64("ErrorTimestamp")),
optional("error", db_string("Error")),
optional("error_id", db_string("ErrorID")),
optional("error_receive_timestamp", db_uint64("ReceiveTimestamp")),
required("error_date", db_date("ErrorDate"), timestamp_to_date("error_timestamp")),
optional("error_datetime", db_datetime("ErrorDateTime"), timestamp_to_datetime("error_timestamp")),
optional("error_receive_date", db_date("ReceiveDate"), timestamp_to_date("error_receive_timestamp")),
optional("error_receive_datetime", db_datetime("ReceiveDateTime"), timestamp_to_datetime("error_receive_timestamp")),
] # type: List[Field]
_error_key = [
"event_name",
"device_id_hash",
]
_errors_source = Source("errors", "errors", "error_date", "appmetrica_device_id",
_error_key, False, _error_fields)
_sessions_start_fields = _system_defined_fields + _sdk_device_fields + _app_fields + [
required("session_start_timestamp", db_uint64("SessionStartTimestamp")),
optional("session_start_receive_timestamp", db_uint64("ReceiveTimestamp")),
required("session_start_date", db_date("SessionStartDate"), timestamp_to_date("session_start_timestamp")),
optional("session_start_datetime", db_datetime("SessionStartDateTime"), timestamp_to_datetime("session_start_timestamp")),
optional("session_start_receive_date", db_date("ReceiveDate"), timestamp_to_date("session_start_receive_timestamp")),
optional("session_start_receive_datetime", db_datetime("ReceiveDateTime"), timestamp_to_datetime("session_start_receive_timestamp")),
] # type: List[Field]
_sessions_start_key = [
"device_id_hash",
]
_sessions_starts_source = Source("sessions_starts", "sessions_starts", "session_start_date", "appmetrica_device_id",
_sessions_start_key, False, _sessions_start_fields)
sources = [
_clicks_source,
_installations_source,
_postbacks_source,
_events_source,
_push_tokens_source,
_crashes_source,
_errors_source,
_sessions_starts_source
]