@uwdata/mosaic-sql 0.17.0 → 0.19.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.
- package/LICENSE +47 -0
- package/README.md +0 -2
- package/dist/src/ast/aggregate.d.ts +82 -0
- package/dist/src/ast/aggregate.d.ts.map +1 -0
- package/dist/src/ast/aggregate.js +180 -0
- package/dist/src/ast/aggregate.js.map +1 -0
- package/dist/src/ast/between-op.d.ts +46 -0
- package/dist/src/ast/between-op.d.ts.map +1 -0
- package/dist/src/ast/between-op.js +60 -0
- package/dist/src/ast/between-op.js.map +1 -0
- package/dist/src/ast/binary-op.d.ts +21 -0
- package/dist/src/ast/binary-op.d.ts.map +1 -0
- package/dist/src/ast/binary-op.js +29 -0
- package/dist/src/ast/binary-op.js.map +1 -0
- package/dist/src/ast/case.d.ts +53 -0
- package/dist/src/ast/case.d.ts.map +1 -0
- package/dist/src/ast/case.js +75 -0
- package/dist/src/ast/case.js.map +1 -0
- package/dist/src/ast/cast.d.ts +18 -0
- package/dist/src/ast/cast.d.ts.map +1 -0
- package/dist/src/ast/cast.js +26 -0
- package/dist/src/ast/cast.js.map +1 -0
- package/dist/src/ast/collate.d.ts +18 -0
- package/dist/src/ast/collate.d.ts.map +1 -0
- package/dist/src/ast/collate.js +25 -0
- package/dist/src/ast/collate.js.map +1 -0
- package/dist/src/ast/column-param.d.ts +23 -0
- package/dist/src/ast/column-param.d.ts.map +1 -0
- package/dist/src/ast/column-param.js +29 -0
- package/dist/src/ast/column-param.js.map +1 -0
- package/dist/src/ast/column-ref.d.ts +40 -0
- package/dist/src/ast/column-ref.d.ts.map +1 -0
- package/dist/src/ast/column-ref.js +58 -0
- package/dist/src/ast/column-ref.js.map +1 -0
- package/dist/src/ast/fragment.d.ts +20 -0
- package/dist/src/ast/fragment.d.ts.map +1 -0
- package/dist/src/ast/fragment.js +26 -0
- package/dist/src/ast/fragment.js.map +1 -0
- package/dist/src/ast/from.d.ts +22 -0
- package/dist/src/ast/from.d.ts.map +1 -0
- package/dist/src/ast/from.js +37 -0
- package/dist/src/ast/from.js.map +1 -0
- package/dist/src/ast/function.d.ts +18 -0
- package/dist/src/ast/function.d.ts.map +1 -0
- package/dist/src/ast/function.js +26 -0
- package/dist/src/ast/function.js.map +1 -0
- package/dist/src/ast/in-op.d.ts +18 -0
- package/dist/src/ast/in-op.d.ts.map +1 -0
- package/dist/src/ast/in-op.js +25 -0
- package/dist/src/ast/in-op.js.map +1 -0
- package/dist/src/ast/interval.d.ts +18 -0
- package/dist/src/ast/interval.d.ts.map +1 -0
- package/dist/src/ast/interval.js +25 -0
- package/dist/src/ast/interval.js.map +1 -0
- package/dist/src/ast/list.d.ts +15 -0
- package/dist/src/ast/list.d.ts.map +1 -0
- package/dist/src/ast/list.js +21 -0
- package/dist/src/ast/list.js.map +1 -0
- package/dist/src/ast/literal.d.ts +16 -0
- package/dist/src/ast/literal.d.ts.map +1 -0
- package/dist/src/ast/literal.js +53 -0
- package/dist/src/ast/literal.js.map +1 -0
- package/dist/src/ast/logical-op.d.ts +32 -0
- package/dist/src/ast/logical-op.d.ts.map +1 -0
- package/dist/src/ast/logical-op.js +46 -0
- package/dist/src/ast/logical-op.js.map +1 -0
- package/dist/src/ast/node.d.ts +25 -0
- package/dist/src/ast/node.d.ts.map +1 -0
- package/dist/src/ast/node.js +36 -0
- package/dist/src/ast/node.js.map +1 -0
- package/dist/src/ast/order-by.d.ts +21 -0
- package/dist/src/ast/order-by.d.ts.map +1 -0
- package/dist/src/ast/order-by.js +36 -0
- package/dist/src/ast/order-by.js.map +1 -0
- package/dist/src/ast/param.d.ts +20 -0
- package/dist/src/ast/param.d.ts.map +1 -0
- package/dist/src/ast/param.js +28 -0
- package/dist/src/ast/param.js.map +1 -0
- package/dist/src/ast/query.d.ts +334 -0
- package/dist/src/ast/query.d.ts.map +1 -0
- package/dist/src/ast/query.js +640 -0
- package/dist/src/ast/query.js.map +1 -0
- package/dist/src/ast/sample.d.ts +27 -0
- package/dist/src/ast/sample.d.ts.map +1 -0
- package/dist/src/ast/sample.js +38 -0
- package/dist/src/ast/sample.js.map +1 -0
- package/dist/src/ast/select.d.ts +19 -0
- package/dist/src/ast/select.d.ts.map +1 -0
- package/dist/src/ast/select.js +35 -0
- package/dist/src/ast/select.js.map +1 -0
- package/dist/src/ast/subquery.d.ts +16 -0
- package/dist/src/ast/subquery.d.ts.map +1 -0
- package/dist/src/ast/subquery.js +21 -0
- package/dist/src/ast/subquery.js.map +1 -0
- package/dist/src/ast/table-ref.d.ts +24 -0
- package/dist/src/ast/table-ref.d.ts.map +1 -0
- package/dist/src/ast/table-ref.js +35 -0
- package/dist/src/ast/table-ref.js.map +1 -0
- package/dist/src/ast/unary-op.d.ts +40 -0
- package/dist/src/ast/unary-op.d.ts.map +1 -0
- package/dist/src/ast/unary-op.js +52 -0
- package/dist/src/ast/unary-op.js.map +1 -0
- package/dist/src/ast/unnest.d.ts +19 -0
- package/dist/src/ast/unnest.d.ts.map +1 -0
- package/dist/src/ast/unnest.js +29 -0
- package/dist/src/ast/unnest.js.map +1 -0
- package/dist/src/ast/verbatim.d.ts +18 -0
- package/dist/src/ast/verbatim.d.ts.map +1 -0
- package/dist/src/ast/verbatim.js +25 -0
- package/dist/src/ast/verbatim.js.map +1 -0
- package/dist/src/ast/window-frame.d.ts +54 -0
- package/dist/src/ast/window-frame.d.ts.map +1 -0
- package/dist/src/ast/window-frame.js +79 -0
- package/dist/src/ast/window-frame.js.map +1 -0
- package/dist/src/ast/window.d.ts +128 -0
- package/dist/src/ast/window.d.ts.map +1 -0
- package/dist/src/ast/window.js +194 -0
- package/dist/src/ast/window.js.map +1 -0
- package/dist/src/ast/with.d.ts +25 -0
- package/dist/src/ast/with.d.ts.map +1 -0
- package/dist/src/ast/with.js +36 -0
- package/dist/src/ast/with.js.map +1 -0
- package/dist/src/constants.d.ts +40 -0
- package/dist/src/constants.d.ts.map +1 -0
- package/dist/src/constants.js +40 -0
- package/dist/src/constants.js.map +1 -0
- package/dist/src/functions/aggregate.d.ts +236 -0
- package/dist/src/functions/aggregate.d.ts.map +1 -0
- package/dist/src/functions/aggregate.js +308 -0
- package/dist/src/functions/aggregate.js.map +1 -0
- package/dist/src/functions/case.d.ts +13 -0
- package/dist/src/functions/case.d.ts.map +1 -0
- package/dist/src/functions/case.js +17 -0
- package/dist/src/functions/case.js.map +1 -0
- package/dist/src/functions/cast.d.ts +23 -0
- package/dist/src/functions/cast.d.ts.map +1 -0
- package/dist/src/functions/cast.js +32 -0
- package/dist/src/functions/cast.js.map +1 -0
- package/dist/src/functions/collate.d.ts +10 -0
- package/dist/src/functions/collate.d.ts.map +1 -0
- package/dist/src/functions/collate.js +12 -0
- package/dist/src/functions/collate.js.map +1 -0
- package/dist/src/functions/column.d.ts +10 -0
- package/dist/src/functions/column.d.ts.map +1 -0
- package/dist/src/functions/column.js +17 -0
- package/dist/src/functions/column.js.map +1 -0
- package/dist/src/functions/cte.d.ts +13 -0
- package/dist/src/functions/cte.d.ts.map +1 -0
- package/dist/src/functions/cte.js +14 -0
- package/dist/src/functions/cte.js.map +1 -0
- package/dist/src/functions/datetime.d.ts +32 -0
- package/dist/src/functions/datetime.d.ts.map +1 -0
- package/dist/src/functions/datetime.js +45 -0
- package/dist/src/functions/datetime.js.map +1 -0
- package/dist/src/functions/interval.d.ts +48 -0
- package/dist/src/functions/interval.d.ts.map +1 -0
- package/dist/src/functions/interval.js +66 -0
- package/dist/src/functions/interval.js.map +1 -0
- package/dist/src/functions/list.d.ts +31 -0
- package/dist/src/functions/list.d.ts.map +1 -0
- package/dist/src/functions/list.js +49 -0
- package/dist/src/functions/list.js.map +1 -0
- package/dist/src/functions/literal.d.ts +16 -0
- package/dist/src/functions/literal.d.ts.map +1 -0
- package/dist/src/functions/literal.js +20 -0
- package/dist/src/functions/literal.js.map +1 -0
- package/dist/src/functions/numeric.d.ts +80 -0
- package/dist/src/functions/numeric.d.ts.map +1 -0
- package/dist/src/functions/numeric.js +110 -0
- package/dist/src/functions/numeric.js.map +1 -0
- package/dist/src/functions/operators.d.ts +169 -0
- package/dist/src/functions/operators.d.ts.map +1 -0
- package/dist/src/functions/operators.js +235 -0
- package/dist/src/functions/operators.js.map +1 -0
- package/dist/src/functions/order-by.d.ts +15 -0
- package/dist/src/functions/order-by.d.ts.map +1 -0
- package/dist/src/functions/order-by.js +19 -0
- package/dist/src/functions/order-by.js.map +1 -0
- package/dist/src/functions/spatial.d.ts +32 -0
- package/dist/src/functions/spatial.d.ts.map +1 -0
- package/dist/src/functions/spatial.js +44 -0
- package/dist/src/functions/spatial.js.map +1 -0
- package/dist/src/functions/sql-template-tag.d.ts +13 -0
- package/dist/src/functions/sql-template-tag.d.ts.map +1 -0
- package/dist/src/functions/sql-template-tag.js +44 -0
- package/dist/src/functions/sql-template-tag.js.map +1 -0
- package/dist/src/functions/string.d.ts +49 -0
- package/dist/src/functions/string.d.ts.map +1 -0
- package/dist/src/functions/string.js +67 -0
- package/dist/src/functions/string.js.map +1 -0
- package/dist/src/functions/table-ref.d.ts +10 -0
- package/dist/src/functions/table-ref.d.ts.map +1 -0
- package/dist/src/functions/table-ref.js +13 -0
- package/dist/src/functions/table-ref.js.map +1 -0
- package/dist/src/functions/unnest.d.ts +10 -0
- package/dist/src/functions/unnest.d.ts.map +1 -0
- package/dist/src/functions/unnest.js +12 -0
- package/dist/src/functions/unnest.js.map +1 -0
- package/dist/src/functions/util.d.ts +7 -0
- package/dist/src/functions/util.d.ts.map +1 -0
- package/dist/src/functions/util.js +9 -0
- package/dist/src/functions/util.js.map +1 -0
- package/dist/src/functions/window-frame.d.ts +41 -0
- package/dist/src/functions/window-frame.d.ts.map +1 -0
- package/dist/src/functions/window-frame.js +52 -0
- package/dist/src/functions/window-frame.js.map +1 -0
- package/dist/src/functions/window.d.ts +74 -0
- package/dist/src/functions/window.d.ts.map +1 -0
- package/dist/src/functions/window.js +96 -0
- package/dist/src/functions/window.js.map +1 -0
- package/dist/src/index.d.ts +73 -0
- package/dist/src/index.d.ts.map +1 -0
- package/{src → dist/src}/index.js +8 -8
- package/dist/src/index.js.map +1 -0
- package/dist/src/load/create.d.ts +10 -0
- package/dist/src/load/create.d.ts.map +1 -0
- package/dist/src/load/create.js +14 -0
- package/dist/src/load/create.js.map +1 -0
- package/dist/src/load/extension.d.ts +2 -0
- package/dist/src/load/extension.d.ts.map +1 -0
- package/dist/src/load/extension.js +4 -0
- package/dist/src/load/extension.js.map +1 -0
- package/dist/src/load/load.d.ts +18 -0
- package/dist/src/load/load.d.ts.map +1 -0
- package/dist/src/load/load.js +80 -0
- package/dist/src/load/load.js.map +1 -0
- package/dist/src/load/sql-from.d.ts +14 -0
- package/dist/src/load/sql-from.d.ts.map +1 -0
- package/dist/src/load/sql-from.js +29 -0
- package/dist/src/load/sql-from.js.map +1 -0
- package/dist/src/transforms/bin-1d.d.ts +16 -0
- package/dist/src/transforms/bin-1d.d.ts.map +1 -0
- package/dist/src/transforms/bin-1d.js +21 -0
- package/dist/src/transforms/bin-1d.js.map +1 -0
- package/dist/src/transforms/bin-2d.d.ts +19 -0
- package/dist/src/transforms/bin-2d.d.ts.map +1 -0
- package/dist/src/transforms/bin-2d.js +27 -0
- package/dist/src/transforms/bin-2d.js.map +1 -0
- package/dist/src/transforms/bin-date.d.ts +31 -0
- package/dist/src/transforms/bin-date.d.ts.map +1 -0
- package/dist/src/transforms/bin-date.js +20 -0
- package/dist/src/transforms/bin-date.js.map +1 -0
- package/dist/src/transforms/bin-histogram.d.ts +37 -0
- package/dist/src/transforms/bin-histogram.d.ts.map +1 -0
- package/dist/src/transforms/bin-histogram.js +32 -0
- package/dist/src/transforms/bin-histogram.js.map +1 -0
- package/dist/src/transforms/bin-linear-1d.d.ts +11 -0
- package/dist/src/transforms/bin-linear-1d.d.ts.map +1 -0
- package/dist/src/transforms/bin-linear-1d.js +25 -0
- package/dist/src/transforms/bin-linear-1d.js.map +1 -0
- package/dist/src/transforms/bin-linear-2d.d.ts +20 -0
- package/dist/src/transforms/bin-linear-2d.d.ts.map +1 -0
- package/dist/src/transforms/bin-linear-2d.js +49 -0
- package/dist/src/transforms/bin-linear-2d.js.map +1 -0
- package/dist/src/transforms/filter-query.d.ts +12 -0
- package/dist/src/transforms/filter-query.d.ts.map +1 -0
- package/dist/src/transforms/filter-query.js +39 -0
- package/dist/src/transforms/filter-query.js.map +1 -0
- package/dist/src/transforms/line-density.d.ts +24 -0
- package/dist/src/transforms/line-density.d.ts.map +1 -0
- package/dist/src/transforms/line-density.js +98 -0
- package/dist/src/transforms/line-density.js.map +1 -0
- package/dist/src/transforms/m4.d.ts +19 -0
- package/dist/src/transforms/m4.d.ts.map +1 -0
- package/dist/src/transforms/m4.js +38 -0
- package/dist/src/transforms/m4.js.map +1 -0
- package/dist/src/transforms/scales.d.ts +30 -0
- package/dist/src/transforms/scales.d.ts.map +1 -0
- package/dist/src/transforms/scales.js +103 -0
- package/dist/src/transforms/scales.js.map +1 -0
- package/dist/src/transforms/util/bin-step.d.ts +50 -0
- package/dist/src/transforms/util/bin-step.d.ts.map +1 -0
- package/dist/src/transforms/util/bin-step.js +53 -0
- package/dist/src/transforms/util/bin-step.js.map +1 -0
- package/dist/src/transforms/util/time-interval.d.ts +14 -0
- package/dist/src/transforms/util/time-interval.d.ts.map +1 -0
- package/dist/src/transforms/util/time-interval.js +88 -0
- package/dist/src/transforms/util/time-interval.js.map +1 -0
- package/dist/src/types.d.ts +49 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +2 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/util/ast.d.ts +62 -0
- package/dist/src/util/ast.d.ts.map +1 -0
- package/{src → dist/src}/util/ast.js +36 -41
- package/dist/src/util/ast.js.map +1 -0
- package/dist/src/util/function.d.ts +56 -0
- package/dist/src/util/function.d.ts.map +1 -0
- package/dist/src/util/function.js +73 -0
- package/dist/src/util/function.js.map +1 -0
- package/dist/src/util/identity.d.ts +6 -0
- package/dist/src/util/identity.d.ts.map +1 -0
- package/dist/src/util/identity.js +8 -0
- package/dist/src/util/identity.js.map +1 -0
- package/dist/src/util/string.d.ts +4 -0
- package/dist/src/util/string.d.ts.map +1 -0
- package/dist/src/util/string.js +14 -0
- package/dist/src/util/string.js.map +1 -0
- package/dist/src/util/type-check.d.ts +17 -0
- package/dist/src/util/type-check.d.ts.map +1 -0
- package/dist/src/util/type-check.js +28 -0
- package/dist/src/util/type-check.js.map +1 -0
- package/dist/src/visit/clone.d.ts +7 -0
- package/dist/src/visit/clone.d.ts.map +1 -0
- package/dist/src/visit/clone.js +52 -0
- package/dist/src/visit/clone.js.map +1 -0
- package/dist/src/visit/recurse.d.ts +2 -0
- package/dist/src/visit/recurse.d.ts.map +1 -0
- package/dist/src/visit/recurse.js +37 -0
- package/dist/src/visit/recurse.js.map +1 -0
- package/dist/src/visit/rewrite.d.ts +9 -0
- package/dist/src/visit/rewrite.d.ts.map +1 -0
- package/dist/src/visit/rewrite.js +39 -0
- package/dist/src/visit/rewrite.js.map +1 -0
- package/dist/src/visit/visitors.d.ts +32 -0
- package/dist/src/visit/visitors.d.ts.map +1 -0
- package/dist/src/visit/visitors.js +95 -0
- package/dist/src/visit/visitors.js.map +1 -0
- package/dist/src/visit/walk.d.ts +21 -0
- package/dist/src/visit/walk.d.ts.map +1 -0
- package/dist/src/visit/walk.js +32 -0
- package/dist/src/visit/walk.js.map +1 -0
- package/package.json +13 -7
- package/src/ast/{aggregate.js → aggregate.ts} +49 -60
- package/src/ast/{between-op.js → between-op.ts} +19 -26
- package/src/ast/binary-op.ts +31 -0
- package/src/ast/{case.js → case.ts} +29 -44
- package/src/ast/{cast.js → cast.ts} +8 -14
- package/src/ast/{collate.js → collate.ts} +8 -14
- package/src/ast/column-param.ts +34 -0
- package/src/ast/{column-ref.js → column-ref.ts} +16 -25
- package/src/ast/fragment.ts +28 -0
- package/src/ast/{from.js → from.ts} +12 -21
- package/src/ast/{function.js → function.ts} +8 -14
- package/src/ast/{in-op.js → in-op.ts} +8 -14
- package/src/ast/{interval.js → interval.ts} +8 -14
- package/src/ast/list.ts +23 -0
- package/src/ast/{literal.js → literal.ts} +6 -9
- package/src/ast/logical-op.ts +50 -0
- package/src/ast/{node.js → node.ts} +10 -13
- package/src/ast/order-by.ts +38 -0
- package/src/ast/{param.js → param.ts} +6 -12
- package/src/ast/{query.js → query.ts} +224 -204
- package/src/ast/sample.ts +47 -0
- package/src/ast/{select.js → select.ts} +10 -16
- package/src/ast/{subquery.js → subquery.ts} +9 -8
- package/src/ast/{table-ref.js → table-ref.ts} +7 -12
- package/src/ast/{unary-op.js → unary-op.ts} +16 -23
- package/src/ast/unnest.ts +31 -0
- package/src/ast/verbatim.ts +27 -0
- package/src/ast/{window-frame.js → window-frame.ts} +37 -47
- package/src/ast/window.ts +246 -0
- package/src/ast/{with.js → with.ts} +19 -20
- package/src/{constants.js → constants.ts} +2 -0
- package/src/functions/aggregate.ts +344 -0
- package/src/functions/{case.js → case.ts} +5 -8
- package/src/functions/{cast.js → cast.ts} +9 -13
- package/src/functions/{collate.js → collate.ts} +4 -7
- package/src/functions/{column.js → column.ts} +9 -10
- package/src/functions/{cte.js → cte.ts} +9 -6
- package/src/functions/{datetime.js → datetime.ts} +12 -20
- package/src/functions/interval.ts +74 -0
- package/src/functions/list.ts +63 -0
- package/src/functions/{literal.js → literal.ts} +5 -7
- package/src/functions/numeric.ts +125 -0
- package/src/functions/operators.ts +272 -0
- package/src/functions/order-by.ts +21 -0
- package/src/functions/spatial.ts +50 -0
- package/src/functions/{sql-template-tag.js → sql-template-tag.ts} +16 -13
- package/src/functions/string.ts +79 -0
- package/src/functions/{table-ref.js → table-ref.ts} +4 -4
- package/src/functions/unnest.ts +13 -0
- package/src/functions/util.ts +10 -0
- package/src/functions/window-frame.ts +58 -0
- package/src/functions/{window.js → window.ts} +18 -35
- package/src/index.ts +79 -0
- package/src/load/{create.js → create.ts} +9 -3
- package/src/load/extension.ts +3 -0
- package/src/load/{load.js → load.ts} +25 -10
- package/src/load/{sql-from.js → sql-from.ts} +14 -7
- package/src/transforms/{bin-1d.js → bin-1d.ts} +13 -9
- package/src/transforms/{bin-2d.js → bin-2d.ts} +17 -13
- package/src/transforms/bin-date.ts +48 -0
- package/src/transforms/bin-histogram.ts +61 -0
- package/src/transforms/{bin-linear-1d.js → bin-linear-1d.ts} +16 -11
- package/src/transforms/{bin-linear-2d.js → bin-linear-2d.ts} +23 -35
- package/src/transforms/{filter-query.js → filter-query.ts} +10 -14
- package/src/transforms/{line-density.js → line-density.ts} +19 -17
- package/src/transforms/{m4.js → m4.ts} +17 -14
- package/src/transforms/{scales.js → scales.ts} +57 -14
- package/src/transforms/util/bin-step.ts +100 -0
- package/src/transforms/util/{time-interval.js → time-interval.ts} +32 -21
- package/src/types.ts +5 -39
- package/src/util/ast.ts +104 -0
- package/src/util/{function.js → function.ts} +40 -31
- package/src/util/identity.ts +7 -0
- package/src/util/{string.js → string.ts} +4 -4
- package/src/util/type-check.ts +31 -0
- package/src/visit/{clone.js → clone.ts} +10 -10
- package/src/visit/{recurse.js → recurse.ts} +3 -1
- package/src/visit/{rewrite.js → rewrite.ts} +7 -7
- package/src/visit/{visitors.js → visitors.ts} +22 -30
- package/src/visit/walk.ts +46 -0
- package/src/ast/binary-op.js +0 -40
- package/src/ast/column-param.js +0 -40
- package/src/ast/fragment.js +0 -26
- package/src/ast/logical-op.js +0 -67
- package/src/ast/order-by.js +0 -48
- package/src/ast/sample.js +0 -53
- package/src/ast/verbatim.js +0 -33
- package/src/ast/window.js +0 -260
- package/src/functions/aggregate.js +0 -347
- package/src/functions/interval.js +0 -83
- package/src/functions/numeric.js +0 -143
- package/src/functions/operators.js +0 -301
- package/src/functions/order-by.js +0 -27
- package/src/functions/spatial.js +0 -59
- package/src/functions/string.js +0 -85
- package/src/functions/util.js +0 -14
- package/src/functions/window-frame.js +0 -61
- package/src/index-types.ts +0 -2
- package/src/load/extension.js +0 -3
- package/src/transforms/bin-date.js +0 -38
- package/src/transforms/bin-histogram.js +0 -52
- package/src/transforms/util/bin-step.js +0 -79
- package/src/util/type-check.js +0 -33
- package/src/visit/walk.js +0 -34
- package/tsconfig.json +0 -8
- package/vitest.config.ts +0 -3
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export function createTable(name, query, { replace = false, temp = false, view = false } = {}) {
|
|
2
|
+
return 'CREATE'
|
|
3
|
+
+ (replace ? ' OR REPLACE ' : ' ')
|
|
4
|
+
+ (temp ? 'TEMP ' : '')
|
|
5
|
+
+ (view ? 'VIEW' : 'TABLE')
|
|
6
|
+
+ (replace ? ' ' : ' IF NOT EXISTS ')
|
|
7
|
+
+ name + ' AS ' + query;
|
|
8
|
+
}
|
|
9
|
+
export function createSchema(name, { strict = false } = {}) {
|
|
10
|
+
return 'CREATE SCHEMA '
|
|
11
|
+
+ (strict ? '' : 'IF NOT EXISTS ')
|
|
12
|
+
+ name;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/load/create.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,KAAa,EAAE,EACvD,OAAO,GAAG,KAAK,EACf,IAAI,GAAG,KAAK,EACZ,IAAI,GAAG,KAAK,KACU,EAAE;IACxB,OAAO,QAAQ;UACX,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC;UAChC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;UACrB,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;UACzB,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC;UACnC,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,EACzC,MAAM,GAAG,KAAK,EACf,GAAG,EAAE;IACJ,OAAO,gBAAgB;UACnB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC;UAChC,IAAI,CAAC;AACX,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../../../src/load/extension.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,UAEzC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../../../src/load/extension.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,WAAW,IAAI,UAAU,IAAI,EAAE,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { CreateTableOptions } from './create.js';
|
|
2
|
+
type Options = {
|
|
3
|
+
select?: string[];
|
|
4
|
+
} & CreateTableOptions & Record<string, unknown>;
|
|
5
|
+
export declare function load(method: string, tableName: string, fileName: string, options?: Options, defaults?: Record<string, unknown>): string;
|
|
6
|
+
export declare function loadCSV(tableName: string, fileName: string, options?: Options): string;
|
|
7
|
+
export declare function loadJSON(tableName: string, fileName: string, options?: Options): string;
|
|
8
|
+
export declare function loadParquet(tableName: string, fileName: string, options?: Options): string;
|
|
9
|
+
/**
|
|
10
|
+
* Load geometry data within a spatial file format.
|
|
11
|
+
* This method requires that the DuckDB spatial extension is loaded.
|
|
12
|
+
* Supports GeoJSON, TopoJSON, and other common spatial formats.
|
|
13
|
+
* For TopoJSON, wet the layer option to indicate the feature to extract.
|
|
14
|
+
*/
|
|
15
|
+
export declare function loadSpatial(tableName: string, fileName: string, options?: Options): string;
|
|
16
|
+
export declare function loadObjects(tableName: string, data: (Record<string, unknown>)[], options?: Options): string;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=load.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../../src/load/load.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAG9D,KAAK,OAAO,GACR;IAAE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CAAE,GACtB,kBAAkB,GAClB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE5B,wBAAgB,IAAI,CAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,OAAY,EACrB,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,UAQvC;AAED,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,UAE7E;AAED,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,UAE9E;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,UAEjF;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,OAAY,UAerF;AAED,wBAAgB,WAAW,CACzB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,EAAC,OAAO,CAAC,CAAC,EAAE,EAChC,OAAO,GAAE,OAAY,UAQtB"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { createTable } from './create.js';
|
|
2
|
+
import { sqlFrom } from './sql-from.js';
|
|
3
|
+
export function load(method, tableName, fileName, options = {}, defaults = {}) {
|
|
4
|
+
const { select = ['*'], where, view, temp, replace, ...file } = options;
|
|
5
|
+
const params = parameters({ ...defaults, ...file });
|
|
6
|
+
const read = `${method}('${fileName}'${params ? ', ' + params : ''})`;
|
|
7
|
+
const filter = where ? ` WHERE ${where}` : '';
|
|
8
|
+
const query = `SELECT ${select.join(', ')} FROM ${read}${filter}`;
|
|
9
|
+
return createTable(tableName, query, { view, temp, replace });
|
|
10
|
+
}
|
|
11
|
+
export function loadCSV(tableName, fileName, options) {
|
|
12
|
+
return load('read_csv', tableName, fileName, options, { auto_detect: true, sample_size: -1 });
|
|
13
|
+
}
|
|
14
|
+
export function loadJSON(tableName, fileName, options) {
|
|
15
|
+
return load('read_json', tableName, fileName, options, { auto_detect: true, format: 'auto' });
|
|
16
|
+
}
|
|
17
|
+
export function loadParquet(tableName, fileName, options) {
|
|
18
|
+
return load('read_parquet', tableName, fileName, options);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Load geometry data within a spatial file format.
|
|
22
|
+
* This method requires that the DuckDB spatial extension is loaded.
|
|
23
|
+
* Supports GeoJSON, TopoJSON, and other common spatial formats.
|
|
24
|
+
* For TopoJSON, wet the layer option to indicate the feature to extract.
|
|
25
|
+
*/
|
|
26
|
+
export function loadSpatial(tableName, fileName, options = {}) {
|
|
27
|
+
// nested options map to the open_options argument of st_read
|
|
28
|
+
const { options: opt, ...rest } = options;
|
|
29
|
+
if (opt) {
|
|
30
|
+
// TODO: check correct syntax for open_options
|
|
31
|
+
const open = Array.isArray(opt) ? opt.join(', ')
|
|
32
|
+
: typeof opt === 'string' ? opt
|
|
33
|
+
: Object.entries(opt)
|
|
34
|
+
.map(([key, value]) => `${key}=${value}`)
|
|
35
|
+
.join(', ');
|
|
36
|
+
Object.assign(rest, { open_options: open.toUpperCase() });
|
|
37
|
+
}
|
|
38
|
+
// TODO: handle box_2d for spatial_filter_box option
|
|
39
|
+
// TODO: handle wkb_blob for spatial_filter option
|
|
40
|
+
return load('st_read', tableName, fileName, rest);
|
|
41
|
+
}
|
|
42
|
+
export function loadObjects(tableName, data, options = {}) {
|
|
43
|
+
const { select = ['*'], ...opt } = options;
|
|
44
|
+
const values = sqlFrom(data);
|
|
45
|
+
const query = select.length === 1 && select[0] === '*'
|
|
46
|
+
? values
|
|
47
|
+
: `SELECT ${select} FROM ${values}`;
|
|
48
|
+
return createTable(tableName, query, opt);
|
|
49
|
+
}
|
|
50
|
+
function parameters(options) {
|
|
51
|
+
return Object.entries(options)
|
|
52
|
+
.map(([key, value]) => `${key}=${toDuckDBValue(value)}`)
|
|
53
|
+
.join(', ');
|
|
54
|
+
}
|
|
55
|
+
function toDuckDBValue(value) {
|
|
56
|
+
switch (typeof value) {
|
|
57
|
+
case 'boolean':
|
|
58
|
+
return String(value);
|
|
59
|
+
case 'string':
|
|
60
|
+
return `'${value}'`;
|
|
61
|
+
case 'undefined':
|
|
62
|
+
case 'object':
|
|
63
|
+
if (value == null) {
|
|
64
|
+
return 'NULL';
|
|
65
|
+
}
|
|
66
|
+
else if (Array.isArray(value)) {
|
|
67
|
+
return '[' + value.map(v => toDuckDBValue(v)).join(', ') + ']';
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
return '{'
|
|
71
|
+
+ Object.entries(value)
|
|
72
|
+
.map(([k, v]) => `'${k}': ${toDuckDBValue(v)}`)
|
|
73
|
+
.join(', ')
|
|
74
|
+
+ '}';
|
|
75
|
+
}
|
|
76
|
+
default:
|
|
77
|
+
return `${value}`;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=load.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load.js","sourceRoot":"","sources":["../../../src/load/load.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
type SQLFromOptions = {
|
|
2
|
+
columns?: string[] | Record<string, string>;
|
|
3
|
+
} & Record<string, string>;
|
|
4
|
+
/**
|
|
5
|
+
* Create a SQL query that embeds the given data for loading.
|
|
6
|
+
* @param data The dataset as an array of objects.
|
|
7
|
+
* @param options Loading options.
|
|
8
|
+
* @param {string[]|object} [options.columns] The columns to include.
|
|
9
|
+
* If not specified, the keys of the first data object are used.
|
|
10
|
+
* @returns {string} SQL query string to load data.
|
|
11
|
+
*/
|
|
12
|
+
export declare function sqlFrom(data: (Record<string, unknown>)[], { columns }?: SQLFromOptions): string;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=sql-from.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql-from.d.ts","sourceRoot":"","sources":["../../../src/load/sql-from.ts"],"names":[],"mappings":"AAEA,KAAK,cAAc,GAAG;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7C,GAAG,MAAM,CAAC,MAAM,EAAC,MAAM,CAAC,CAAC;AAE1B;;;;;;;GAOG;AACH,wBAAgB,OAAO,CACrB,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,EACjC,EACE,OAAsC,EACvC,GAAE,cAAmB,UAkBvB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { asLiteral } from '../util/ast.js';
|
|
2
|
+
/**
|
|
3
|
+
* Create a SQL query that embeds the given data for loading.
|
|
4
|
+
* @param data The dataset as an array of objects.
|
|
5
|
+
* @param options Loading options.
|
|
6
|
+
* @param {string[]|object} [options.columns] The columns to include.
|
|
7
|
+
* If not specified, the keys of the first data object are used.
|
|
8
|
+
* @returns {string} SQL query string to load data.
|
|
9
|
+
*/
|
|
10
|
+
export function sqlFrom(data, { columns = Object.keys(data?.[0] || {}) } = {}) {
|
|
11
|
+
let keys = [];
|
|
12
|
+
if (Array.isArray(columns)) {
|
|
13
|
+
keys = columns;
|
|
14
|
+
columns = keys.reduce((m, k) => (m[k] = k, m), {});
|
|
15
|
+
}
|
|
16
|
+
else if (columns) {
|
|
17
|
+
keys = Object.keys(columns);
|
|
18
|
+
}
|
|
19
|
+
if (!keys.length) {
|
|
20
|
+
throw new Error('Can not create table from empty column set.');
|
|
21
|
+
}
|
|
22
|
+
const subq = [];
|
|
23
|
+
for (const datum of data) {
|
|
24
|
+
const sel = keys.map(k => `${asLiteral(datum[k])} AS "${columns[k]}"`);
|
|
25
|
+
subq.push(`(SELECT ${sel.join(', ')})`);
|
|
26
|
+
}
|
|
27
|
+
return subq.join(' UNION ALL ');
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=sql-from.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql-from.js","sourceRoot":"","sources":["../../../src/load/sql-from.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAM3C;;;;;;;GAOG;AACH,MAAM,UAAU,OAAO,CACrB,IAAiC,EACjC,EACE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KACpB,EAAE;IAEtB,IAAI,IAAI,GAAa,EAAE,CAAC;IACxB,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,IAAI,GAAG,OAAO,CAAC;QACf,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAA4B,CAAC,CAAC;IAC/E,CAAC;SAAM,IAAI,OAAO,EAAE,CAAC;QACnB,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,IAAI,GAAG,EAAE,CAAC;IAChB,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACvE,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAClC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ExprValue } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Compute binned values over a one-dimensional extent.
|
|
4
|
+
* @param x The expression to bin.
|
|
5
|
+
* The expression must return numeric values. For example, to bin
|
|
6
|
+
* datetime values, the input expression might map them to numeric
|
|
7
|
+
* values such as milliseconds since the epoch.
|
|
8
|
+
* @param lo The low value of the bin extent.
|
|
9
|
+
* @param hi The high value of the bin extent.
|
|
10
|
+
* @param bins The integer number of bins to use within the
|
|
11
|
+
* defined binning extent.
|
|
12
|
+
* @param reverse Flag indicating if bins should be
|
|
13
|
+
* produced in reverse order from *hi* to *lo* (default `false`).
|
|
14
|
+
*/
|
|
15
|
+
export declare function bin1d(x: ExprValue, lo: number, hi: number, bins: number, reverse?: boolean): import("../index.js").BinaryOpNode;
|
|
16
|
+
//# sourceMappingURL=bin-1d.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin-1d.d.ts","sourceRoot":"","sources":["../../../src/transforms/bin-1d.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C;;;;;;;;;;;;GAYG;AACH,wBAAgB,KAAK,CACnB,CAAC,EAAE,SAAS,EACZ,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,OAAe,sCAKzB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { float64 } from '../functions/cast.js';
|
|
2
|
+
import { mul, sub } from '../functions/operators.js';
|
|
3
|
+
/**
|
|
4
|
+
* Compute binned values over a one-dimensional extent.
|
|
5
|
+
* @param x The expression to bin.
|
|
6
|
+
* The expression must return numeric values. For example, to bin
|
|
7
|
+
* datetime values, the input expression might map them to numeric
|
|
8
|
+
* values such as milliseconds since the epoch.
|
|
9
|
+
* @param lo The low value of the bin extent.
|
|
10
|
+
* @param hi The high value of the bin extent.
|
|
11
|
+
* @param bins The integer number of bins to use within the
|
|
12
|
+
* defined binning extent.
|
|
13
|
+
* @param reverse Flag indicating if bins should be
|
|
14
|
+
* produced in reverse order from *hi* to *lo* (default `false`).
|
|
15
|
+
*/
|
|
16
|
+
export function bin1d(x, lo, hi, bins, reverse = false) {
|
|
17
|
+
const diff = reverse ? sub(hi, float64(x)) : sub(float64(x), lo);
|
|
18
|
+
const scale = hi === lo ? 0 : bins / (hi - lo);
|
|
19
|
+
return scale ? mul(diff, float64(scale)) : diff;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=bin-1d.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin-1d.js","sourceRoot":"","sources":["../../../src/transforms/bin-1d.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAErD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,KAAK,CACnB,CAAY,EACZ,EAAU,EACV,EAAU,EACV,IAAY,EACZ,UAAmB,KAAK;IAExB,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACjE,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/C,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { SelectQuery } from '../ast/query.js';
|
|
2
|
+
import type { ExprValue } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Perform aggregation over a binned 2D domain. This method takes expressions
|
|
5
|
+
* for the (non-truncated) x and y bin values; these expressions should be
|
|
6
|
+
* in units of grid indices, but can contain fractional components. The
|
|
7
|
+
* resulting query performs grouping and aggregation over the binned domain,
|
|
8
|
+
* and uses a 2D integer bin index of the form (xbin + num_xbins * ybin).
|
|
9
|
+
* @param q The input query. The FROM and WHERE clauses should
|
|
10
|
+
* be added to the query separately, either before or after this method.
|
|
11
|
+
* @param xp The x bin expression.
|
|
12
|
+
* @param yp The y bin expression.
|
|
13
|
+
* @param aggs Named aggregate expressions over bins.
|
|
14
|
+
* @param {xn The number of bins along the x dimension
|
|
15
|
+
* @param groupby Group by expressions.
|
|
16
|
+
* @returns The input query, with binning expressions added.
|
|
17
|
+
*/
|
|
18
|
+
export declare function bin2d(q: SelectQuery, xp: ExprValue, yp: ExprValue, aggs: Record<string, ExprValue>, xn: number, groupby: string[]): SelectQuery;
|
|
19
|
+
//# sourceMappingURL=bin-2d.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin-2d.d.ts","sourceRoot":"","sources":["../../../src/transforms/bin-2d.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAK7C;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,KAAK,CACnB,CAAC,EAAE,WAAW,EACd,EAAE,EAAE,SAAS,EACb,EAAE,EAAE,SAAS,EACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAC/B,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,EAAE,eAQlB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { int32 } from '../functions/cast.js';
|
|
2
|
+
import { floor } from '../functions/numeric.js';
|
|
3
|
+
import { add, mul } from '../functions/operators.js';
|
|
4
|
+
/**
|
|
5
|
+
* Perform aggregation over a binned 2D domain. This method takes expressions
|
|
6
|
+
* for the (non-truncated) x and y bin values; these expressions should be
|
|
7
|
+
* in units of grid indices, but can contain fractional components. The
|
|
8
|
+
* resulting query performs grouping and aggregation over the binned domain,
|
|
9
|
+
* and uses a 2D integer bin index of the form (xbin + num_xbins * ybin).
|
|
10
|
+
* @param q The input query. The FROM and WHERE clauses should
|
|
11
|
+
* be added to the query separately, either before or after this method.
|
|
12
|
+
* @param xp The x bin expression.
|
|
13
|
+
* @param yp The y bin expression.
|
|
14
|
+
* @param aggs Named aggregate expressions over bins.
|
|
15
|
+
* @param {xn The number of bins along the x dimension
|
|
16
|
+
* @param groupby Group by expressions.
|
|
17
|
+
* @returns The input query, with binning expressions added.
|
|
18
|
+
*/
|
|
19
|
+
export function bin2d(q, xp, yp, aggs, xn, groupby) {
|
|
20
|
+
return q
|
|
21
|
+
.select({
|
|
22
|
+
index: add(int32(floor(xp)), mul(int32(floor(yp)), xn)),
|
|
23
|
+
...aggs
|
|
24
|
+
})
|
|
25
|
+
.groupby('index', groupby);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=bin-2d.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin-2d.js","sourceRoot":"","sources":["../../../src/transforms/bin-2d.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAErD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,KAAK,CACnB,CAAc,EACd,EAAa,EACb,EAAa,EACb,IAA+B,EAC/B,EAAU,EACV,OAAiB;IAEjB,OAAO,CAAC;SACL,MAAM,CAAC;QACN,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvD,GAAG,IAAI;KACR,CAAC;SACD,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { ExprNode } from '../ast/node.js';
|
|
2
|
+
import type { ExprValue } from '../types.js';
|
|
3
|
+
import { type DateTimeValue, type TimeUnit } from './util/time-interval.js';
|
|
4
|
+
export interface BinDateOptions {
|
|
5
|
+
/**
|
|
6
|
+
* A string indicating a time interval unit,
|
|
7
|
+
* such as 'year', 'day', or 'hour'.
|
|
8
|
+
*/
|
|
9
|
+
interval?: TimeUnit;
|
|
10
|
+
/**
|
|
11
|
+
* The number of time interval steps to take, such as 2 years or 3 months.
|
|
12
|
+
*/
|
|
13
|
+
step?: number;
|
|
14
|
+
/**
|
|
15
|
+
* The number of bin steps (default 0) by which to offset the result.
|
|
16
|
+
*/
|
|
17
|
+
offset?: number;
|
|
18
|
+
/**
|
|
19
|
+
* The desired number of binning steps. This value is a hint,
|
|
20
|
+
* it does not guarantee an exact number of steps.
|
|
21
|
+
*/
|
|
22
|
+
steps?: number;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Return a SQL expression for date/time bins.
|
|
26
|
+
* @param field The column or expression to bin.
|
|
27
|
+
* @param extent The min/max extent over which to bin.
|
|
28
|
+
* @param options Datetime binning options.
|
|
29
|
+
*/
|
|
30
|
+
export declare function binDate(field: ExprValue, extent: [DateTimeValue, DateTimeValue], options?: BinDateOptions): ExprNode;
|
|
31
|
+
//# sourceMappingURL=bin-date.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin-date.d.ts","sourceRoot":"","sources":["../../../src/transforms/bin-date.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C,OAAO,EAAgB,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAE1F,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CACrB,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC,EACtC,OAAO,GAAE,cAAmB,GAC3B,QAAQ,CASV"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { dateBin } from '../functions/datetime.js';
|
|
2
|
+
import { interval } from '../functions/interval.js';
|
|
3
|
+
import { add } from '../functions/operators.js';
|
|
4
|
+
import { timeInterval } from './util/time-interval.js';
|
|
5
|
+
/**
|
|
6
|
+
* Return a SQL expression for date/time bins.
|
|
7
|
+
* @param field The column or expression to bin.
|
|
8
|
+
* @param extent The min/max extent over which to bin.
|
|
9
|
+
* @param options Datetime binning options.
|
|
10
|
+
*/
|
|
11
|
+
export function binDate(field, extent, options = {}) {
|
|
12
|
+
const { offset = 0 } = options;
|
|
13
|
+
// use interval if provided, otherwise determine from extent
|
|
14
|
+
const { unit, step = 1 } = options.interval
|
|
15
|
+
? { unit: options.interval, step: options.step }
|
|
16
|
+
: timeInterval(extent[0], extent[1], options.steps || 40);
|
|
17
|
+
const bin = dateBin(field, unit, step);
|
|
18
|
+
return offset ? add(bin, interval(unit, offset * step)) : bin;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=bin-date.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin-date.js","sourceRoot":"","sources":["../../../src/transforms/bin-date.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAChD,OAAO,EAAE,YAAY,EAAqC,MAAM,yBAAyB,CAAC;AAuB1F;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CACrB,KAAgB,EAChB,MAAsC,EACtC,UAA0B,EAAE;IAE5B,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC;IAE/B,4DAA4D;IAC5D,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,QAAQ;QACzC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE;QAChD,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACvC,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAChE,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { ExprNode } from '../ast/node.js';
|
|
2
|
+
import type { ExprValue } from '../types.js';
|
|
3
|
+
import { Scale } from './scales.js';
|
|
4
|
+
export interface BinHistogramOptions {
|
|
5
|
+
/** An exact binning step to use. */
|
|
6
|
+
step?: number;
|
|
7
|
+
/**
|
|
8
|
+
* The desired number of binning steps. This value is a hint,
|
|
9
|
+
* it does not guarantee an exact number of steps.
|
|
10
|
+
*/
|
|
11
|
+
steps?: number;
|
|
12
|
+
/**
|
|
13
|
+
* A minimum binning step value. No generated
|
|
14
|
+
* step can be less than this value.
|
|
15
|
+
*/
|
|
16
|
+
minstep?: number;
|
|
17
|
+
/**
|
|
18
|
+
* A boolean flag (default true) indicating if bin extents should be
|
|
19
|
+
* snapped to "nice" numbers such as multiples of 5 or 10.
|
|
20
|
+
*/
|
|
21
|
+
nice?: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* The number of bin steps (default 0) by which to offset the result.
|
|
24
|
+
*/
|
|
25
|
+
offset?: number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Return a SQL expression for histogram bins.
|
|
29
|
+
* @param field The column or expression to bin.
|
|
30
|
+
* @param extent The min/max extent over which to bin.
|
|
31
|
+
* @param options Binning options.
|
|
32
|
+
* @param transform Scale transforms to apply to create
|
|
33
|
+
* (potentially non-linear) binning intervals.
|
|
34
|
+
* @returns The resulting SQL expression
|
|
35
|
+
*/
|
|
36
|
+
export declare function binHistogram(field: ExprValue, extent: [number, number], options?: BinHistogramOptions, transform?: Scale<number>): ExprNode;
|
|
37
|
+
//# sourceMappingURL=bin-histogram.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin-histogram.d.ts","sourceRoot":"","sources":["../../../src/transforms/bin-histogram.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAK7C,OAAO,EAAE,KAAK,EAAkB,MAAM,aAAa,CAAC;AAEpD,MAAM,WAAW,mBAAmB;IAClC,oCAAoC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EACxB,OAAO,GAAE,mBAAwB,EACjC,SAAS,GAAE,KAAK,CAAC,MAAM,CAAuC,GAC7D,QAAQ,CAcV"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { float64 } from '../functions/cast.js';
|
|
2
|
+
import { floor } from '../functions/numeric.js';
|
|
3
|
+
import { add, div, mul, sub } from '../functions/operators.js';
|
|
4
|
+
import { binSpec } from './util/bin-step.js';
|
|
5
|
+
import { scaleTransform } from './scales.js';
|
|
6
|
+
/**
|
|
7
|
+
* Return a SQL expression for histogram bins.
|
|
8
|
+
* @param field The column or expression to bin.
|
|
9
|
+
* @param extent The min/max extent over which to bin.
|
|
10
|
+
* @param options Binning options.
|
|
11
|
+
* @param transform Scale transforms to apply to create
|
|
12
|
+
* (potentially non-linear) binning intervals.
|
|
13
|
+
* @returns The resulting SQL expression
|
|
14
|
+
*/
|
|
15
|
+
export function binHistogram(field, extent, options = {}, transform = scaleTransform({ type: 'linear' })) {
|
|
16
|
+
const [min, max] = extent;
|
|
17
|
+
const { offset = 0 } = options;
|
|
18
|
+
const { apply, sqlApply, sqlInvert } = transform;
|
|
19
|
+
const b = binSpec(apply(min), apply(max), options);
|
|
20
|
+
const col = sqlApply(field);
|
|
21
|
+
const alpha = (b.max - b.min) / b.steps;
|
|
22
|
+
let expr = b.min === 0 ? col : sub(col, b.min);
|
|
23
|
+
if (alpha !== 1)
|
|
24
|
+
expr = div(expr, float64(alpha));
|
|
25
|
+
expr = floor(offset ? add(offset, expr) : expr);
|
|
26
|
+
if (alpha !== 1)
|
|
27
|
+
expr = mul(alpha, expr);
|
|
28
|
+
if (b.min !== 0)
|
|
29
|
+
expr = add(b.min, expr);
|
|
30
|
+
return sqlInvert(expr);
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=bin-histogram.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin-histogram.js","sourceRoot":"","sources":["../../../src/transforms/bin-histogram.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAS,cAAc,EAAE,MAAM,aAAa,CAAC;AA0BpD;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAgB,EAChB,MAAwB,EACxB,UAA+B,EAAE,EACjC,YAA2B,cAAc,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAE;IAE9D,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;IAC1B,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC;IAC/B,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;IACjD,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5B,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;IAExC,IAAI,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,KAAK,KAAK,CAAC;QAAE,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAClD,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,KAAK,KAAK,CAAC;QAAE,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACzC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;QAAE,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACzC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { SelectQuery } from '../ast/query.js';
|
|
2
|
+
import type { ExprValue } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Perform linear binning in one dimension.
|
|
5
|
+
* @param query The base query to bin.
|
|
6
|
+
* @param x The expression to bin.
|
|
7
|
+
* @param weight The expression to weight by.
|
|
8
|
+
* @param groupby Group by expressions.
|
|
9
|
+
*/
|
|
10
|
+
export declare function binLinear1d(query: SelectQuery, x: ExprValue, weight?: ExprValue | undefined, groupby?: string[]): SelectQuery;
|
|
11
|
+
//# sourceMappingURL=bin-linear-1d.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin-linear-1d.d.ts","sourceRoot":"","sources":["../../../src/transforms/bin-linear-1d.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAO7C;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,WAAW,EAClB,CAAC,EAAE,SAAS,EACZ,MAAM,GAAE,SAAS,GAAG,SAAqB,EACzC,OAAO,GAAE,MAAM,EAAO,eAevB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Query } from '../ast/query.js';
|
|
2
|
+
import { sum } from '../functions/aggregate.js';
|
|
3
|
+
import { int32 } from '../functions/cast.js';
|
|
4
|
+
import { floor } from '../functions/numeric.js';
|
|
5
|
+
import { add, mul, neq, sub } from '../functions/operators.js';
|
|
6
|
+
/**
|
|
7
|
+
* Perform linear binning in one dimension.
|
|
8
|
+
* @param query The base query to bin.
|
|
9
|
+
* @param x The expression to bin.
|
|
10
|
+
* @param weight The expression to weight by.
|
|
11
|
+
* @param groupby Group by expressions.
|
|
12
|
+
*/
|
|
13
|
+
export function binLinear1d(query, x, weight = undefined, groupby = []) {
|
|
14
|
+
const w = weight
|
|
15
|
+
? ((x) => mul(x, weight))
|
|
16
|
+
: ((x) => x);
|
|
17
|
+
const p0 = floor(x);
|
|
18
|
+
const p1 = add(p0, 1);
|
|
19
|
+
return Query
|
|
20
|
+
.from(Query.unionAll(query.clone().select({ i: int32(p0), w: w(sub(p1, x)) }), query.clone().select({ i: int32(p1), w: w(sub(x, p0)) })))
|
|
21
|
+
.select({ index: 'i', density: sum('w') }, groupby)
|
|
22
|
+
.groupby('index', groupby)
|
|
23
|
+
.having(neq('density', 0));
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=bin-linear-1d.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin-linear-1d.js","sourceRoot":"","sources":["../../../src/transforms/bin-linear-1d.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CACzB,KAAkB,EAClB,CAAY,EACZ,SAAgC,SAAS,EACzC,UAAoB,EAAE;IAEtB,MAAM,CAAC,GAAG,MAAM;QACd,CAAC,CAAC,CAAC,CAAC,CAAW,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC,CAAC,CAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACpB,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACtB,OAAO,KAAK;SACT,IAAI,CAAC,KAAK,CAAC,QAAQ,CAClB,KAAK,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EACxD,KAAK,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CACzD,CAAC;SACD,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC;SAClD,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;SACzB,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { SelectQuery } from '../ast/query.js';
|
|
2
|
+
import type { ExprValue } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Compute densities over a 2D domain using linear binning. The weight of
|
|
5
|
+
* each data point is linearly distributed over adjacent bins, providing
|
|
6
|
+
* a better base for subsequent kernel density estimation. This method takes
|
|
7
|
+
* expressions for the (non-truncated) x and y bin values; these expressions
|
|
8
|
+
* should be in units of grid indices, but can contain fractional components.
|
|
9
|
+
* @param q The input query. The FROM and WHERE clauses should
|
|
10
|
+
* be added to the query separately, before this method is invoked.
|
|
11
|
+
* @param xp The x grid bin expression
|
|
12
|
+
* @param yp The y grid bin expression
|
|
13
|
+
* @param weight Point weights.
|
|
14
|
+
* @param xn The number of x grid bins.
|
|
15
|
+
* @param groupby Group by expressions.
|
|
16
|
+
* @returns A linear binning query for bin `index` and aggregate `density`
|
|
17
|
+
* columns, in addition to any group by expressions.
|
|
18
|
+
*/
|
|
19
|
+
export declare function binLinear2d(q: SelectQuery, xp: ExprValue, yp: ExprValue, weight: ExprValue | undefined, xn: number, groupby?: string[]): SelectQuery;
|
|
20
|
+
//# sourceMappingURL=bin-linear-2d.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin-linear-2d.d.ts","sourceRoot":"","sources":["../../../src/transforms/bin-linear-2d.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAQ7C;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,WAAW,CACzB,CAAC,EAAE,WAAW,EACd,EAAE,EAAE,SAAS,EACb,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,SAAS,GAAG,SAAS,EAC7B,EAAE,EAAE,MAAM,EACV,OAAO,GAAE,MAAM,EAAO,eA8BvB"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Query } from '../ast/query.js';
|
|
2
|
+
import { sum } from '../functions/aggregate.js';
|
|
3
|
+
import { int32 } from '../functions/cast.js';
|
|
4
|
+
import { floor } from '../functions/numeric.js';
|
|
5
|
+
import { add, mul, neq, sub } from '../functions/operators.js';
|
|
6
|
+
import { identity } from '../util/identity.js';
|
|
7
|
+
/**
|
|
8
|
+
* Compute densities over a 2D domain using linear binning. The weight of
|
|
9
|
+
* each data point is linearly distributed over adjacent bins, providing
|
|
10
|
+
* a better base for subsequent kernel density estimation. This method takes
|
|
11
|
+
* expressions for the (non-truncated) x and y bin values; these expressions
|
|
12
|
+
* should be in units of grid indices, but can contain fractional components.
|
|
13
|
+
* @param q The input query. The FROM and WHERE clauses should
|
|
14
|
+
* be added to the query separately, before this method is invoked.
|
|
15
|
+
* @param xp The x grid bin expression
|
|
16
|
+
* @param yp The y grid bin expression
|
|
17
|
+
* @param weight Point weights.
|
|
18
|
+
* @param xn The number of x grid bins.
|
|
19
|
+
* @param groupby Group by expressions.
|
|
20
|
+
* @returns A linear binning query for bin `index` and aggregate `density`
|
|
21
|
+
* columns, in addition to any group by expressions.
|
|
22
|
+
*/
|
|
23
|
+
export function binLinear2d(q, xp, yp, weight, xn, groupby = []) {
|
|
24
|
+
const w = weight ? (x) => mul(x, weight) : identity;
|
|
25
|
+
const subq = (i, w) => q.clone().select({ xp, yp, i, w });
|
|
26
|
+
const index = (x, y) => add(x, mul(y, xn));
|
|
27
|
+
const xu = int32(floor(xp));
|
|
28
|
+
const yu = int32(floor(yp));
|
|
29
|
+
const xv = add(xu, 1);
|
|
30
|
+
const yv = add(yu, 1);
|
|
31
|
+
const xpu = sub(xp, xu);
|
|
32
|
+
const xvp = sub(xv, xp);
|
|
33
|
+
const ypu = sub(yp, yu);
|
|
34
|
+
const yvp = sub(yv, yp);
|
|
35
|
+
return Query
|
|
36
|
+
.from(Query.unionAll(
|
|
37
|
+
// grid[xu + yu * xn] += (xv - xp) * (yv - yp) * wi
|
|
38
|
+
subq(index(xu, yu), w(mul(xvp, yvp))),
|
|
39
|
+
// grid[xu + yv * xn] += (xv - xp) * (yp - yu) * wi
|
|
40
|
+
subq(index(xu, yv), w(mul(xvp, ypu))),
|
|
41
|
+
// grid[xv + yu * xn] += (xp - xu) * (yv - yp) * wi
|
|
42
|
+
subq(index(xv, yu), w(mul(xpu, yvp))),
|
|
43
|
+
// grid[xv + yv * xn] += (xp - xu) * (yp - yu) * wi
|
|
44
|
+
subq(index(xv, yv), w(mul(xpu, ypu)))))
|
|
45
|
+
.select({ index: 'i', density: sum('w') }, groupby)
|
|
46
|
+
.groupby('index', groupby)
|
|
47
|
+
.having(neq('density', 0));
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=bin-linear-2d.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin-linear-2d.js","sourceRoot":"","sources":["../../../src/transforms/bin-linear-2d.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,WAAW,CACzB,CAAc,EACd,EAAa,EACb,EAAa,EACb,MAA6B,EAC7B,EAAU,EACV,UAAoB,EAAE;IAEtB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAW,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAE9D,MAAM,IAAI,GAAG,CAAC,CAAY,EAAE,CAAY,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAChF,MAAM,KAAK,GAAG,CAAC,CAAY,EAAE,CAAY,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAEjE,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACtB,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACtB,MAAM,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACxB,MAAM,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACxB,MAAM,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACxB,MAAM,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAExB,OAAO,KAAK;SACT,IAAI,CAAC,KAAK,CAAC,QAAQ;IAClB,mDAAmD;IACnD,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACrC,mDAAmD;IACnD,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACrC,mDAAmD;IACnD,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACrC,mDAAmD;IACnD,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CACtC,CAAC;SACD,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC;SAClD,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;SACzB,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { FilterExpr } from '../types.js';
|
|
2
|
+
import { type Query } from '../ast/query.js';
|
|
3
|
+
import { type TableRefNode } from '../ast/table-ref.js';
|
|
4
|
+
/**
|
|
5
|
+
* Returns a generator function that clones the given query and adds
|
|
6
|
+
* a WHERE clause for the specified table reference.
|
|
7
|
+
* @param query The query to clone and extend.
|
|
8
|
+
* @param tableRef The table to filter.
|
|
9
|
+
* @returns The generator function.
|
|
10
|
+
*/
|
|
11
|
+
export declare function filterQuery(query: Query, tableRef: TableRefNode): (filter: FilterExpr) => Query;
|
|
12
|
+
//# sourceMappingURL=filter-query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-query.d.ts","sourceRoot":"","sources":["../../../src/transforms/filter-query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAiB,KAAK,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAIpE;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,IACtD,QAAQ,UAAU,WAc3B"}
|