You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/censorship/censorship.md
+2-2
Original file line number
Diff line number
Diff line change
@@ -16,7 +16,7 @@ author: 'John Gracey'
16
16
public: True
17
17
---
18
18
19
-
Censorship is a very important concept to understand. There are two methods to limiting what data Wisdom collects available to website owners. We recommend using HTML Configuration (the first method) as much as possible. You can also enable and disable certain Wisdom [recording modules](/censorship--recording-modules) like cookie tracking and mouse tracking.
19
+
Censorship is a very important concept to understand. There are two methods to limiting what data Wisdom collects available to website owners. We recommend using HTML Configuration (the first method) as much as possible. You can also enable and disable certain Wisdom [recording modules](/censorship/recording-modules) like cookie tracking and mouse tracking.
20
20
21
21
<divclass='spacer32'></div>
22
22
@@ -65,7 +65,7 @@ Password visibility toggles may cause Wisdom to treat password fields as normall
65
65
### 2. Tracking Configurations Page
66
66
On the [Tracking Configuration](https://app.getwisdom.io/org/~/tracking) page you can specify CSS selectors to censor HTML elements, including input fields.
67
67
68
-
Beyond censoring HTML, you can also enable and disable certain Wisdom "recording modules", such as Mouse movement tracking. Please see the list of [recording modules](/censorship--recording-modules) for their impact on privacy.
68
+
Beyond censoring HTML, you can also enable and disable certain Wisdom "recording modules", such as Mouse movement tracking. Please see the list of [recording modules](recording-modules) for their impact on privacy.
Copy file name to clipboardExpand all lines: docs/censorship/overview.md
+2-2
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,7 @@ sidebar_label: Overview
5
5
6
6
### Censorship
7
7
8
-
Censorship is a very important concept to understand. There are two methods to limiting what data Wisdom collects available to website owners. We recommend using HTML Configuration (the first method) as much as possible. You can also enable and disable certain Wisdom [recording modules](/js-client-api/recording-modules/README.md) like cookie tracking and mouse tracking.
8
+
Censorship is a very important concept to understand. There are two methods to limiting what data Wisdom collects available to website owners. We recommend using HTML Configuration (the first method) as much as possible. You can also enable and disable certain Wisdom [recording modules](recording-modules) like cookie tracking and mouse tracking.
9
9
10
10
<divclass='spacer32'></div>
11
11
@@ -53,7 +53,7 @@ Password visibility toggles may cause Wisdom to treat password fields as normall
53
53
### 2. Tracking Configurations Page
54
54
On the [Tracking Configuration](https://app.getwisdom.io/org/~/tracking) page you can specify CSS selectors to censor HTML elements, including input fields.
55
55
56
-
Beyond censoring HTML, you can also enable and disable certain Wisdom "recording modules", such as Mouse movement tracking. Please see the list of [recording modules](js-client-api/recording-modules/README.md) for their impact on privacy.
56
+
Beyond censoring HTML, you can also enable and disable certain Wisdom "recording modules", such as Mouse movement tracking. Please see the list of [recording modules](recording-modules) for their impact on privacy.
@@ -17,20 +19,21 @@ import Code from '../../src/common/code/'
17
19
Cubejs is an open source analytics framework that greatly simplifies running analytics queries. Cubejs comprises of a frontend library and backend analytical server infrastructure that Wisdom fully manages for you. Like many modern analytics frameworks, Cubejs differentiates between data dimensions (time, browser) and data measures (user count, unique page views).
Wisdom utilizes pass-through (cost plus) pricing ontop of AWS infrastructure allowing our customers to fine-tune their storage requirements- and in many cases receive substantial cost savings.
11
+
12
+
1. Duration: Increase Data Retention from zero days to an indefinitely timeline (billing per gigabyte/hour).
13
+
2. Durability: Reducing data replication factor to cut cost by ~20%, reducing data availability and data safety in the case of data center destruction.
Wisdom is your modern web analytics data lake, home to an exciting community of SaaS product builders who share and contribute custom reports. This is what makes Wisdom such a compelling solution- that Wisdom allows customers to directly access and query their SQL data from their own provisioned PostgreSQL database, and their own AWS S3 bucket.
10
+
11
+
Here we discuss how to access and manage this data.
Copy file name to clipboardExpand all lines: docs/data-access/sql-reports/overview.md
+25-66
Original file line number
Diff line number
Diff line change
@@ -3,24 +3,28 @@ title: Community SQL Reports Overview
3
3
sidebar_label: Overview
4
4
---
5
5
6
-
## Running Community Queries
6
+
## About
7
7
8
-
A Few Sample Queries to get you started.
8
+
Like most things in life, someone's already thought of it, and very likely already done it. Just try registering a `.com` domain name or registering a username on Reddit. With Relational Databases being around since the 1970s thanks to IBM's Edgar Codd, analytics and reporting ideas have been around for over 50 years. Building on this body of knowledge, we've put together a SQL library built by the Wisdom community to easily share analytics reports- collaboration taking place from [Github](https://github.com/Wisdom/community-sql).
9
9
10
+
<br/>
10
11
12
+
Getting started is easy:
13
+
14
+
```sql
15
+
-- 1. Update the Library stored in your PostgreSQL database:
When the `community.report()` function is run, the SQL code of the desired report is looked-up within the `community.queries` table- and this table is updated with the `community.update_reports()` function that pulls in queries from the [Github Repo](https://github.com/Wisdom/community-sql). On Github, SQL reports are defined with two files: 1) the SQL code stored in `query.sql`, 2) Metadata stored in a `manifest.json` file. Within the manifest file all mandatory SQL query parameters are defined.
15
25
16
-
- Only Variable literal values (single quote vars). Passing idents are not supported (double quote variables).
17
-
- Function is executed as current user?????
18
-
- During a `report_update` function call, all views within the `community_types` schema will be deleted, cascading to all dependents, and then replaced. Therefore, if you are building queries ontop of community queries, they too should be created as a community query to ensure they are always updated and not deleted.
19
-
- Undercovers, PLPSQL uses `EXECUTE` from a `format()`. Var markers are only injected if they are non-null.
26
+
You may note the strange syntax when running a community query (eg. `null::community_types."@example/test"). PostgreSQL's procedural language ("PL/pgSQL") has a strongly-typed type system that requires all queries have a predefined return type. This strange syntax converts null to the proper return type of the SQL query, ultimately defined within the manifest.json file.
20
27
21
-
SQL:
22
-
format('SELECT $$_session_id$$ LIMIT 5;',
23
-
REPLACE(__sql, '$$_session_id$$', _session_id)
24
28
25
29
26
30
A Few Example Queries to get you started developing
@@ -31,55 +35,6 @@ A Few Example Queries to get you started developing
- get users with first + last visit time + activity trend???
46
-
47
-
@wisdom/components/page-engagement`
48
-
49
-
50
-
PERIOD_SUM
51
-
PERIOD TREND:
52
-
Activity Time (avg, median, stddev)
53
-
Page Views
54
-
Proportional
55
-
56
-
Questions To ask:
57
-
- Do users know this feature exists.
58
-
-- Have they visited, AND interacted on it?
59
-
- Do users like this feature?
60
-
--
61
-
62
-
63
-
-- When do users interact with features? 1. Time to Activation overlayed with 2. Median activity time per user
64
-
(cohort by calendar date (days), or activeTime sum (15 mins))
65
-
66
-
FEATURE SUCCESS:
67
-
- number of users as percent of app total? (shift delay days???)
68
-
- median activity time.
69
-
-
70
-
71
-
Page Engagement
72
-
Page Engagement by Person:
73
-
TREND
74
-
75
-
Histogram cohorted?
76
-
77
-
78
-
79
-
80
-
The query will not be executed if two dollar signs exist in the query: `$$`, indicating that a param has not been substituted.
81
-
82
-
83
38
84
39
85
40
@@ -114,16 +69,20 @@ A few example community queries to help you get started developing SQL reports.
114
69
## Semantic Requirements And Conventions
115
70
116
71
When namimg files and folders, keep in mind:
117
-
- Root directory folders must start with '@', as Github name handle.
118
-
- Files and folders must be lowercased, and only allow a-z, 0-9 and dash.
72
+
- Root directory folders must start with '@', as your own Github name handle- so everyone knows who the author/owner is.
73
+
- Files and folders must be lowercased, and only allow the following characters: a-z, 0-9 and dash.
119
74
- Three files are required per report: query.sql, manifest.json, and README.md.
75
+
- To contribute, submit a pull request and accept the MIT contributor license assignment.
120
76
121
77
122
-
### Strict Type Checking
123
-
-- views created from JSON type
124
78
79
+
### A Safe, Simple and Collaborative system.
80
+
From an open community, reports are created
125
81
126
82
83
+
- Only literal value variables (single quote variables) are possible. Passing idents are not supported (double quote variables).
84
+
- The community report is executed as the current user, with all permissions they have.
85
+
- During a `community.report_update` function call, all views within the `community_types` schema will be deleted, cascading to all dependents, and then replaced. Therefore, if you are building queries ontop of community queries, they too should be created as a community query to ensure they are always updated and not deleted.
86
+
- Undercovers, PLPSQL uses `EXECUTE` from a `format()`. Variables are only injected if they are non-null.
87
+
- You can access variables from the $1 JSONB parameter with type casting: `($1->>'_project_id')::INTEGER`
127
88
128
-
PR Process:
129
-
- must accept contributor license MIT contributor guide as part of a PR checklist
@@ -135,7 +130,7 @@ select nspname from pg_catalog.pg_namespace;
135
130
136
131
137
132
### Data Syncing SaaS Vendors
138
-
Note: Requires setup of vendor secret API keys (auth tokens). Since this functionality is realtively speaking new, you should reach out to your assigned Wisdom account manager to discuess getting started with normalized vendor data.
133
+
Note: Requires setup of vendor secret API keys (auth tokens). Since this functionality is relatively new, you should reach out to your assigned Wisdom account manager to discuss getting started with normalized vendor data.
@@ -183,11 +178,11 @@ Note: Requires setup of vendor secret API keys (auth tokens). Since this functio
183
178
184
179
#### Triggers
185
180
186
-
1.On record insert into table `person`, a trigger will broadcast a notification identified as `project_${projectId}`. This will help you implement real-time data processing within your application, for example, new user signup notifications.
181
+
On record insert into table `person`, a trigger will broadcast a notification identified as `project_${projectId}`. This will help you implement real-time data processing within your application, for example, new user signup notifications.
187
182
188
183
#### Functions
189
184
190
-
2.NOTE: See [Community Reports](#) for how to use and run community report functions.
185
+
NOTE: See [Community Reports](#) for how to use and run community report functions.
0 commit comments