@duckcodeailabs/dql-notebook 0.8.4 → 0.8.6
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.
- package/dist/document.d.ts +1 -1
- package/dist/document.d.ts.map +1 -1
- package/dist/document.js +40 -18
- package/dist/document.js.map +1 -1
- package/package.json +3 -3
package/dist/document.d.ts
CHANGED
|
@@ -29,5 +29,5 @@ export interface NotebookDocument {
|
|
|
29
29
|
export declare function createNotebookDocument(title: string, cells: NotebookCell[], metadata?: Partial<NotebookMetadata>): NotebookDocument;
|
|
30
30
|
export declare function serializeNotebook(document: NotebookDocument): string;
|
|
31
31
|
export declare function deserializeNotebook(raw: string): NotebookDocument;
|
|
32
|
-
export declare function createWelcomeNotebook(template: string, projectTitle: string): NotebookDocument;
|
|
32
|
+
export declare function createWelcomeNotebook(template: string, projectTitle: string, driver?: string): NotebookDocument;
|
|
33
33
|
//# sourceMappingURL=document.d.ts.map
|
package/dist/document.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../src/document.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC;AAEpE,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,mBAAmB,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,CAAC,CAAC;IACX,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,YAAY,EAAE,EACrB,QAAQ,GAAE,OAAO,CAAC,gBAAgB,CAAM,GACvC,gBAAgB,CAUlB;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAEpE;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAsBjE;
|
|
1
|
+
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../src/document.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC;AAEpE,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,mBAAmB,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,CAAC,CAAC;IACX,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,YAAY,EAAE,EACrB,QAAQ,GAAE,OAAO,CAAC,gBAAgB,CAAM,GACvC,gBAAgB,CAUlB;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAEpE;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAsBjE;AAwBD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAkE/G"}
|
package/dist/document.js
CHANGED
|
@@ -34,47 +34,63 @@ export function deserializeNotebook(raw) {
|
|
|
34
34
|
})),
|
|
35
35
|
};
|
|
36
36
|
}
|
|
37
|
-
|
|
37
|
+
function listTablesSQL(driver) {
|
|
38
|
+
switch (driver) {
|
|
39
|
+
case 'duckdb':
|
|
40
|
+
case 'sqlite':
|
|
41
|
+
case 'file':
|
|
42
|
+
return `SHOW TABLES;`;
|
|
43
|
+
case 'postgresql':
|
|
44
|
+
case 'redshift':
|
|
45
|
+
return `SELECT table_schema, table_name FROM information_schema.tables\nWHERE table_schema NOT IN ('information_schema', 'pg_catalog')\nORDER BY table_schema, table_name LIMIT 20;`;
|
|
46
|
+
case 'mysql':
|
|
47
|
+
return `SELECT table_schema, table_name FROM information_schema.tables\nWHERE table_schema NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys')\nORDER BY table_schema, table_name LIMIT 20;`;
|
|
48
|
+
case 'snowflake':
|
|
49
|
+
case 'mssql':
|
|
50
|
+
case 'databricks':
|
|
51
|
+
case 'trino':
|
|
52
|
+
case 'fabric':
|
|
53
|
+
return `SELECT table_schema, table_name FROM information_schema.tables\nWHERE table_schema NOT IN ('INFORMATION_SCHEMA')\nORDER BY table_schema, table_name LIMIT 20;`;
|
|
54
|
+
default:
|
|
55
|
+
return `SELECT table_schema, table_name FROM information_schema.tables\nLIMIT 20;`;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
export function createWelcomeNotebook(template, projectTitle, driver) {
|
|
38
59
|
const normalized = template.toLowerCase();
|
|
60
|
+
const showTablesQuery = listTablesSQL(driver);
|
|
39
61
|
if (normalized === 'dbt') {
|
|
40
62
|
return createNotebookDocument(`${projectTitle} — DQL Notebook`, [
|
|
41
63
|
{
|
|
42
64
|
id: 'intro',
|
|
43
65
|
type: 'markdown',
|
|
44
66
|
title: 'Welcome',
|
|
45
|
-
source: `# ${projectTitle}\n\nThis notebook connects to your dbt project's
|
|
67
|
+
source: `# ${projectTitle}\n\nThis notebook connects to your dbt project's database. Run the cells below to explore the tables built by dbt.\n\n> DQL is the **answer layer** on top of dbt. dbt transforms your data — DQL turns it into trusted, governed analytics answers.`,
|
|
46
68
|
},
|
|
47
69
|
{
|
|
48
70
|
id: 'sql-tables',
|
|
49
71
|
type: 'sql',
|
|
50
72
|
title: 'Available Tables',
|
|
51
|
-
source: `-- List
|
|
73
|
+
source: `-- List tables in your database\n${showTablesQuery}`,
|
|
52
74
|
},
|
|
53
75
|
{
|
|
54
|
-
id: 'sql-
|
|
76
|
+
id: 'sql-explore',
|
|
55
77
|
type: 'sql',
|
|
56
|
-
title: '
|
|
57
|
-
source:
|
|
78
|
+
title: 'Explore Your Data',
|
|
79
|
+
source: `-- Replace 'your_table' with a table name from the results above\n-- SELECT * FROM your_table LIMIT 20;`,
|
|
58
80
|
},
|
|
59
81
|
{
|
|
60
|
-
id: 'dql-
|
|
82
|
+
id: 'dql-example',
|
|
61
83
|
type: 'dql',
|
|
62
|
-
title: '
|
|
63
|
-
source: `block "
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
id: 'sql-items',
|
|
67
|
-
type: 'sql',
|
|
68
|
-
title: 'Top Products',
|
|
69
|
-
source: `SELECT\n p.product_name,\n COUNT(*) AS items_sold,\n ROUND(SUM(oi.product_price), 2) AS total_revenue\nFROM order_items oi\nJOIN stg_products p ON oi.product_id = p.product_id\nGROUP BY p.product_name\nORDER BY total_revenue DESC\nLIMIT 10;`,
|
|
84
|
+
title: 'Example DQL Block',
|
|
85
|
+
source: `block "Example Block" {\n domain = "analytics"\n type = "custom"\n owner = "data-team"\n description = "An example governed analytics block"\n\n query = """\n -- Replace with your own query\n ${showTablesQuery.replace(/\n/g, '\n ')}\n """\n\n tests {\n assert row_count > 0\n }\n}`,
|
|
70
86
|
},
|
|
71
87
|
{
|
|
72
88
|
id: 'next-steps',
|
|
73
89
|
type: 'markdown',
|
|
74
90
|
title: 'Next Steps',
|
|
75
|
-
source: `## Next steps\n\n1. **Add SQL cells** — query any table from your dbt project\n2. **Create DQL blocks** — wrap queries with governance (owner, domain, tests)\n3. **
|
|
91
|
+
source: `## Next steps\n\n1. **Add SQL cells** — query any table from your dbt project\n2. **Create DQL blocks** — wrap queries with governance (owner, domain, tests)\n3. **Open Block Studio** — use the sidebar to browse tables and semantic metrics\n4. **View lineage** — run \`dql lineage\` to see the full data flow\n5. **Export** — save as \`.dqlnb\` for git-trackable analytics`,
|
|
76
92
|
},
|
|
77
|
-
], { description: 'DQL notebook for exploring a dbt project
|
|
93
|
+
], { description: 'DQL notebook for exploring a dbt project.', template: 'dbt' });
|
|
78
94
|
}
|
|
79
95
|
// Default notebook for non-dbt projects
|
|
80
96
|
return createNotebookDocument(`${projectTitle} — DQL Notebook`, [
|
|
@@ -84,11 +100,17 @@ export function createWelcomeNotebook(template, projectTitle) {
|
|
|
84
100
|
title: 'Welcome',
|
|
85
101
|
source: `# ${projectTitle}\n\nWelcome to the DQL notebook. Use this notebook to write SQL, create governed DQL blocks, and build analytics answers — all tracked in Git.`,
|
|
86
102
|
},
|
|
103
|
+
{
|
|
104
|
+
id: 'sql-tables',
|
|
105
|
+
type: 'sql',
|
|
106
|
+
title: 'Available Tables',
|
|
107
|
+
source: `-- List tables in your database\n${showTablesQuery}`,
|
|
108
|
+
},
|
|
87
109
|
{
|
|
88
110
|
id: 'sql-starter',
|
|
89
111
|
type: 'sql',
|
|
90
112
|
title: 'Starter Query',
|
|
91
|
-
source: `-- Write your SQL here\n--
|
|
113
|
+
source: `-- Write your SQL here\n-- If using DuckDB, you can query local CSV, Parquet, and JSON files directly\n-- Example: SELECT * FROM read_csv_auto('./data/my_file.csv') LIMIT 10;`,
|
|
92
114
|
},
|
|
93
115
|
{
|
|
94
116
|
id: 'next-steps',
|
package/dist/document.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document.js","sourceRoot":"","sources":["../src/document.ts"],"names":[],"mappings":"AAiCA,MAAM,UAAU,sBAAsB,CACpC,KAAa,EACb,KAAqB,EACrB,WAAsC,EAAE;IAExC,OAAO;QACL,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE;YACR,KAAK;YACL,WAAW,EAAE,KAAK;YAClB,GAAG,QAAQ;SACZ;QACD,KAAK;KACN,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAA0B;IAC1D,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA8B,CAAC;IAC5D,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACpF,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO;QACL,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE;YACR,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK;YAC5B,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW;YACxC,WAAW,EAAE,KAAK;YAClB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ;SACnC;QACD,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACxC,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,QAAQ,KAAK,GAAG,CAAC,EAAE;YAClC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,UAAU;YAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,QAAgB,EAAE,YAAoB;
|
|
1
|
+
{"version":3,"file":"document.js","sourceRoot":"","sources":["../src/document.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@duckcodeailabs/dql-notebook",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.6",
|
|
4
4
|
"description": "Notebook document model and execution helpers for DQL",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
"access": "public"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@duckcodeailabs/dql-core": "^0.8.
|
|
28
|
-
"@duckcodeailabs/dql-connectors": "^0.8.
|
|
27
|
+
"@duckcodeailabs/dql-core": "^0.8.6",
|
|
28
|
+
"@duckcodeailabs/dql-connectors": "^0.8.6"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@types/node": "^22.0.0",
|