@nshiab/simple-data-analysis-core 0.0.12
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 +20 -0
- package/README.md +43 -0
- package/esm/class/Simple.d.ts +66 -0
- package/esm/class/Simple.d.ts.map +1 -0
- package/esm/class/Simple.js +94 -0
- package/esm/class/SimpleDB.d.ts +487 -0
- package/esm/class/SimpleDB.d.ts.map +1 -0
- package/esm/class/SimpleDB.js +807 -0
- package/esm/class/SimpleTable.d.ts +4408 -0
- package/esm/class/SimpleTable.d.ts.map +1 -0
- package/esm/class/SimpleTable.js +5401 -0
- package/esm/helpers/accumulateQuery.d.ts +4 -0
- package/esm/helpers/accumulateQuery.d.ts.map +1 -0
- package/esm/helpers/accumulateQuery.js +15 -0
- package/esm/helpers/camelCase.d.ts +30 -0
- package/esm/helpers/camelCase.d.ts.map +1 -0
- package/esm/helpers/camelCase.js +45 -0
- package/esm/helpers/capitalize.d.ts +28 -0
- package/esm/helpers/capitalize.d.ts.map +1 -0
- package/esm/helpers/capitalize.js +33 -0
- package/esm/helpers/checkVssIndexes.d.ts +2 -0
- package/esm/helpers/checkVssIndexes.d.ts.map +1 -0
- package/esm/helpers/checkVssIndexes.js +16 -0
- package/esm/helpers/cleanCache.d.ts +3 -0
- package/esm/helpers/cleanCache.d.ts.map +1 -0
- package/esm/helpers/cleanCache.js +17 -0
- package/esm/helpers/cleanPath.d.ts +2 -0
- package/esm/helpers/cleanPath.d.ts.map +1 -0
- package/esm/helpers/cleanPath.js +3 -0
- package/esm/helpers/cleanSQL.d.ts +2 -0
- package/esm/helpers/cleanSQL.d.ts.map +1 -0
- package/esm/helpers/cleanSQL.js +24 -0
- package/esm/helpers/concatenateRowQuery.d.ts +2 -0
- package/esm/helpers/concatenateRowQuery.d.ts.map +1 -0
- package/esm/helpers/concatenateRowQuery.js +9 -0
- package/esm/helpers/convertForJS.d.ts +6 -0
- package/esm/helpers/convertForJS.d.ts.map +1 -0
- package/esm/helpers/convertForJS.js +39 -0
- package/esm/helpers/createDirectory.d.ts +2 -0
- package/esm/helpers/createDirectory.d.ts.map +1 -0
- package/esm/helpers/createDirectory.js +10 -0
- package/esm/helpers/csvFormat.d.ts +3 -0
- package/esm/helpers/csvFormat.d.ts.map +1 -0
- package/esm/helpers/csvFormat.js +165 -0
- package/esm/helpers/dataToArrays.d.ts +51 -0
- package/esm/helpers/dataToArrays.d.ts.map +1 -0
- package/esm/helpers/dataToArrays.js +55 -0
- package/esm/helpers/extractTypes.d.ts +6 -0
- package/esm/helpers/extractTypes.d.ts.map +1 -0
- package/esm/helpers/extractTypes.js +11 -0
- package/esm/helpers/findGeoColumn.d.ts +3 -0
- package/esm/helpers/findGeoColumn.d.ts.map +1 -0
- package/esm/helpers/findGeoColumn.js +18 -0
- package/esm/helpers/formatDate.d.ts +34 -0
- package/esm/helpers/formatDate.d.ts.map +1 -0
- package/esm/helpers/formatDate.js +69 -0
- package/esm/helpers/formatNumber.d.ts +46 -0
- package/esm/helpers/formatNumber.d.ts.map +1 -0
- package/esm/helpers/formatNumber.js +122 -0
- package/esm/helpers/getCombinations.d.ts +3 -0
- package/esm/helpers/getCombinations.d.ts.map +1 -0
- package/esm/helpers/getCombinations.js +24 -0
- package/esm/helpers/getExtension.d.ts +2 -0
- package/esm/helpers/getExtension.d.ts.map +1 -0
- package/esm/helpers/getExtension.js +9 -0
- package/esm/helpers/getIdenticalColumns.d.ts +2 -0
- package/esm/helpers/getIdenticalColumns.d.ts.map +1 -0
- package/esm/helpers/getIdenticalColumns.js +3 -0
- package/esm/helpers/getName.d.ts +2 -0
- package/esm/helpers/getName.d.ts.map +1 -0
- package/esm/helpers/getName.js +14 -0
- package/esm/helpers/getProjection.d.ts +3 -0
- package/esm/helpers/getProjection.d.ts.map +1 -0
- package/esm/helpers/getProjection.js +22 -0
- package/esm/helpers/getProjectionParquet.d.ts +3 -0
- package/esm/helpers/getProjectionParquet.d.ts.map +1 -0
- package/esm/helpers/getProjectionParquet.js +24 -0
- package/esm/helpers/index.d.ts +20 -0
- package/esm/helpers/index.d.ts.map +1 -0
- package/esm/helpers/index.js +19 -0
- package/esm/helpers/keepNumericalColumns.d.ts +4 -0
- package/esm/helpers/keepNumericalColumns.d.ts.map +1 -0
- package/esm/helpers/keepNumericalColumns.js +13 -0
- package/esm/helpers/logData.d.ts +6 -0
- package/esm/helpers/logData.d.ts.map +1 -0
- package/esm/helpers/logData.js +48 -0
- package/esm/helpers/mergeOptions.d.ts +28 -0
- package/esm/helpers/mergeOptions.d.ts.map +1 -0
- package/esm/helpers/mergeOptions.js +12 -0
- package/esm/helpers/nestQuery.d.ts +2 -0
- package/esm/helpers/nestQuery.d.ts.map +1 -0
- package/esm/helpers/nestQuery.js +13 -0
- package/esm/helpers/parseDuckDBType.d.ts +2 -0
- package/esm/helpers/parseDuckDBType.d.ts.map +1 -0
- package/esm/helpers/parseDuckDBType.js +38 -0
- package/esm/helpers/parseTypes.d.ts +2 -0
- package/esm/helpers/parseTypes.d.ts.map +1 -0
- package/esm/helpers/parseTypes.js +35 -0
- package/esm/helpers/parseValue.d.ts +2 -0
- package/esm/helpers/parseValue.d.ts.map +1 -0
- package/esm/helpers/parseValue.js +20 -0
- package/esm/helpers/prettyDuration.d.ts +55 -0
- package/esm/helpers/prettyDuration.d.ts.map +1 -0
- package/esm/helpers/prettyDuration.js +145 -0
- package/esm/helpers/printTable.d.ts +47 -0
- package/esm/helpers/printTable.d.ts.map +1 -0
- package/esm/helpers/printTable.js +217 -0
- package/esm/helpers/queryDB.d.ts +19 -0
- package/esm/helpers/queryDB.d.ts.map +1 -0
- package/esm/helpers/queryDB.js +62 -0
- package/esm/helpers/rewind.d.ts +3 -0
- package/esm/helpers/rewind.d.ts.map +1 -0
- package/esm/helpers/rewind.js +1293 -0
- package/esm/helpers/runQuery.d.ts +14 -0
- package/esm/helpers/runQuery.d.ts.map +1 -0
- package/esm/helpers/runQuery.js +26 -0
- package/esm/helpers/setDbProps.d.ts +3 -0
- package/esm/helpers/setDbProps.d.ts.map +1 -0
- package/esm/helpers/setDbProps.js +25 -0
- package/esm/helpers/shouldFlipBeforeExport.d.ts +2 -0
- package/esm/helpers/shouldFlipBeforeExport.d.ts.map +1 -0
- package/esm/helpers/shouldFlipBeforeExport.js +3 -0
- package/esm/helpers/stringToArray.d.ts +2 -0
- package/esm/helpers/stringToArray.d.ts.map +1 -0
- package/esm/helpers/stringToArray.js +11 -0
- package/esm/helpers/stringifyDates.d.ts +5 -0
- package/esm/helpers/stringifyDates.d.ts.map +1 -0
- package/esm/helpers/stringifyDates.js +14 -0
- package/esm/helpers/stringifyDatesInvert.d.ts +5 -0
- package/esm/helpers/stringifyDatesInvert.d.ts.map +1 -0
- package/esm/helpers/stringifyDatesInvert.js +14 -0
- package/esm/helpers/unifyColumns.d.ts +9 -0
- package/esm/helpers/unifyColumns.d.ts.map +1 -0
- package/esm/helpers/unifyColumns.js +21 -0
- package/esm/helpers/unnestQuery.d.ts +2 -0
- package/esm/helpers/unnestQuery.d.ts.map +1 -0
- package/esm/helpers/unnestQuery.js +8 -0
- package/esm/helpers/wrapString.d.ts +35 -0
- package/esm/helpers/wrapString.d.ts.map +1 -0
- package/esm/helpers/wrapString.js +83 -0
- package/esm/helpers/writeDataAsArrays.d.ts +3 -0
- package/esm/helpers/writeDataAsArrays.d.ts.map +1 -0
- package/esm/helpers/writeDataAsArrays.js +13 -0
- package/esm/helpers/writeProjectionsAndIndexes.d.ts +3 -0
- package/esm/helpers/writeProjectionsAndIndexes.d.ts.map +1 -0
- package/esm/helpers/writeProjectionsAndIndexes.js +29 -0
- package/esm/index.d.ts +31 -0
- package/esm/index.d.ts.map +1 -0
- package/esm/index.js +30 -0
- package/esm/methods/aggregateGeoQuery.d.ts +5 -0
- package/esm/methods/aggregateGeoQuery.d.ts.map +1 -0
- package/esm/methods/aggregateGeoQuery.js +24 -0
- package/esm/methods/binsQuery.d.ts +5 -0
- package/esm/methods/binsQuery.d.ts.map +1 -0
- package/esm/methods/binsQuery.js +40 -0
- package/esm/methods/bm25.d.ts +17 -0
- package/esm/methods/bm25.d.ts.map +1 -0
- package/esm/methods/bm25.js +48 -0
- package/esm/methods/cache.d.ts +6 -0
- package/esm/methods/cache.d.ts.map +1 -0
- package/esm/methods/cache.js +133 -0
- package/esm/methods/capitalizeQuery.d.ts +2 -0
- package/esm/methods/capitalizeQuery.d.ts.map +1 -0
- package/esm/methods/capitalizeQuery.js +8 -0
- package/esm/methods/cloneColumn.d.ts +4 -0
- package/esm/methods/cloneColumn.d.ts.map +1 -0
- package/esm/methods/cloneColumn.js +13 -0
- package/esm/methods/cloneQuery.d.ts +4 -0
- package/esm/methods/cloneQuery.d.ts.map +1 -0
- package/esm/methods/cloneQuery.js +6 -0
- package/esm/methods/concatenateQuery.d.ts +4 -0
- package/esm/methods/concatenateQuery.d.ts.map +1 -0
- package/esm/methods/concatenateQuery.js +13 -0
- package/esm/methods/convertQuery.d.ts +7 -0
- package/esm/methods/convertQuery.d.ts.map +1 -0
- package/esm/methods/convertQuery.js +78 -0
- package/esm/methods/correlations.d.ts +9 -0
- package/esm/methods/correlations.d.ts.map +1 -0
- package/esm/methods/correlations.js +40 -0
- package/esm/methods/correlationsQuery.d.ts +5 -0
- package/esm/methods/correlationsQuery.d.ts.map +1 -0
- package/esm/methods/correlationsQuery.js +26 -0
- package/esm/methods/createFtsIndex.d.ts +11 -0
- package/esm/methods/createFtsIndex.d.ts.map +1 -0
- package/esm/methods/createFtsIndex.js +28 -0
- package/esm/methods/createVssIndex.d.ts +9 -0
- package/esm/methods/createVssIndex.d.ts.map +1 -0
- package/esm/methods/createVssIndex.js +38 -0
- package/esm/methods/crossJoinQuery.d.ts +4 -0
- package/esm/methods/crossJoinQuery.d.ts.map +1 -0
- package/esm/methods/crossJoinQuery.js +3 -0
- package/esm/methods/distanceQuery.d.ts +6 -0
- package/esm/methods/distanceQuery.d.ts.map +1 -0
- package/esm/methods/distanceQuery.js +42 -0
- package/esm/methods/fill.d.ts +7 -0
- package/esm/methods/fill.d.ts.map +1 -0
- package/esm/methods/fill.js +60 -0
- package/esm/methods/fuzzyClean.d.ts +7 -0
- package/esm/methods/fuzzyClean.d.ts.map +1 -0
- package/esm/methods/fuzzyClean.js +194 -0
- package/esm/methods/fuzzyJoin.d.ts +8 -0
- package/esm/methods/fuzzyJoin.d.ts.map +1 -0
- package/esm/methods/fuzzyJoin.js +57 -0
- package/esm/methods/fuzzyJoinQuery.d.ts +2 -0
- package/esm/methods/fuzzyJoinQuery.d.ts.map +1 -0
- package/esm/methods/fuzzyJoinQuery.js +19 -0
- package/esm/methods/getBottom.d.ts +8 -0
- package/esm/methods/getBottom.d.ts.map +1 -0
- package/esm/methods/getBottom.js +22 -0
- package/esm/methods/getColumns.d.ts +3 -0
- package/esm/methods/getColumns.d.ts.map +1 -0
- package/esm/methods/getColumns.js +15 -0
- package/esm/methods/getDescription.d.ts +9 -0
- package/esm/methods/getDescription.d.ts.map +1 -0
- package/esm/methods/getDescription.js +20 -0
- package/esm/methods/getFirstRow.d.ts +7 -0
- package/esm/methods/getFirstRow.d.ts.map +1 -0
- package/esm/methods/getFirstRow.js +15 -0
- package/esm/methods/getGeoData.d.ts +17 -0
- package/esm/methods/getGeoData.d.ts.map +1 -0
- package/esm/methods/getGeoData.js +41 -0
- package/esm/methods/getLastRow.d.ts +7 -0
- package/esm/methods/getLastRow.d.ts.map +1 -0
- package/esm/methods/getLastRow.js +19 -0
- package/esm/methods/getMax.d.ts +3 -0
- package/esm/methods/getMax.d.ts.map +1 -0
- package/esm/methods/getMax.js +18 -0
- package/esm/methods/getMean.d.ts +5 -0
- package/esm/methods/getMean.d.ts.map +1 -0
- package/esm/methods/getMean.js +17 -0
- package/esm/methods/getMedian.d.ts +5 -0
- package/esm/methods/getMedian.d.ts.map +1 -0
- package/esm/methods/getMedian.js +17 -0
- package/esm/methods/getMin.d.ts +3 -0
- package/esm/methods/getMin.d.ts.map +1 -0
- package/esm/methods/getMin.js +18 -0
- package/esm/methods/getNbCharacters.d.ts +3 -0
- package/esm/methods/getNbCharacters.d.ts.map +1 -0
- package/esm/methods/getNbCharacters.js +15 -0
- package/esm/methods/getNbRows.d.ts +3 -0
- package/esm/methods/getNbRows.d.ts.map +1 -0
- package/esm/methods/getNbRows.js +15 -0
- package/esm/methods/getQuantile.d.ts +5 -0
- package/esm/methods/getQuantile.d.ts.map +1 -0
- package/esm/methods/getQuantile.js +17 -0
- package/esm/methods/getSkew.d.ts +5 -0
- package/esm/methods/getSkew.d.ts.map +1 -0
- package/esm/methods/getSkew.js +17 -0
- package/esm/methods/getStdDev.d.ts +5 -0
- package/esm/methods/getStdDev.d.ts.map +1 -0
- package/esm/methods/getStdDev.js +17 -0
- package/esm/methods/getSum.d.ts +3 -0
- package/esm/methods/getSum.d.ts.map +1 -0
- package/esm/methods/getSum.js +15 -0
- package/esm/methods/getTableNames.d.ts +3 -0
- package/esm/methods/getTableNames.d.ts.map +1 -0
- package/esm/methods/getTableNames.js +15 -0
- package/esm/methods/getTop.d.ts +7 -0
- package/esm/methods/getTop.d.ts.map +1 -0
- package/esm/methods/getTop.js +14 -0
- package/esm/methods/getTypes.d.ts +5 -0
- package/esm/methods/getTypes.d.ts.map +1 -0
- package/esm/methods/getTypes.js +13 -0
- package/esm/methods/getUniques.d.ts +3 -0
- package/esm/methods/getUniques.d.ts.map +1 -0
- package/esm/methods/getUniques.js +15 -0
- package/esm/methods/getValues.d.ts +3 -0
- package/esm/methods/getValues.d.ts.map +1 -0
- package/esm/methods/getValues.js +15 -0
- package/esm/methods/getVar.d.ts +5 -0
- package/esm/methods/getVar.d.ts.map +1 -0
- package/esm/methods/getVar.js +17 -0
- package/esm/methods/insertRowsQuery.d.ts +4 -0
- package/esm/methods/insertRowsQuery.d.ts.map +1 -0
- package/esm/methods/insertRowsQuery.js +11 -0
- package/esm/methods/join.d.ts +7 -0
- package/esm/methods/join.d.ts.map +1 -0
- package/esm/methods/join.js +63 -0
- package/esm/methods/joinGeo.d.ts +10 -0
- package/esm/methods/joinGeo.d.ts.map +1 -0
- package/esm/methods/joinGeo.js +76 -0
- package/esm/methods/joinGeoQuery.d.ts +2 -0
- package/esm/methods/joinGeoQuery.d.ts.map +1 -0
- package/esm/methods/joinGeoQuery.js +55 -0
- package/esm/methods/joinQuery.d.ts +2 -0
- package/esm/methods/joinQuery.d.ts.map +1 -0
- package/esm/methods/joinQuery.js +21 -0
- package/esm/methods/keepQuery.d.ts +4 -0
- package/esm/methods/keepQuery.d.ts.map +1 -0
- package/esm/methods/keepQuery.js +15 -0
- package/esm/methods/linearRegressionQuery.d.ts +5 -0
- package/esm/methods/linearRegressionQuery.d.ts.map +1 -0
- package/esm/methods/linearRegressionQuery.js +37 -0
- package/esm/methods/linearRegressions.d.ts +9 -0
- package/esm/methods/linearRegressions.d.ts.map +1 -0
- package/esm/methods/linearRegressions.js +43 -0
- package/esm/methods/loadArray.d.ts +5 -0
- package/esm/methods/loadArray.d.ts.map +1 -0
- package/esm/methods/loadArray.js +78 -0
- package/esm/methods/loadDataQuery.d.ts +23 -0
- package/esm/methods/loadDataQuery.d.ts.map +1 -0
- package/esm/methods/loadDataQuery.js +77 -0
- package/esm/methods/lowerQuery.d.ts +2 -0
- package/esm/methods/lowerQuery.d.ts.map +1 -0
- package/esm/methods/lowerQuery.js +7 -0
- package/esm/methods/normalizeQuery.d.ts +5 -0
- package/esm/methods/normalizeQuery.d.ts.map +1 -0
- package/esm/methods/normalizeQuery.js +22 -0
- package/esm/methods/normalizeString.d.ts +5 -0
- package/esm/methods/normalizeString.d.ts.map +1 -0
- package/esm/methods/normalizeString.js +26 -0
- package/esm/methods/outliersIQRQuery.d.ts +4 -0
- package/esm/methods/outliersIQRQuery.d.ts.map +1 -0
- package/esm/methods/outliersIQRQuery.js +31 -0
- package/esm/methods/proportionsHorizontalQuery.d.ts +5 -0
- package/esm/methods/proportionsHorizontalQuery.d.ts.map +1 -0
- package/esm/methods/proportionsHorizontalQuery.js +15 -0
- package/esm/methods/proportionsVerticalQuery.d.ts +5 -0
- package/esm/methods/proportionsVerticalQuery.d.ts.map +1 -0
- package/esm/methods/proportionsVerticalQuery.js +19 -0
- package/esm/methods/quantilesQuery.d.ts +4 -0
- package/esm/methods/quantilesQuery.d.ts.map +1 -0
- package/esm/methods/quantilesQuery.js +12 -0
- package/esm/methods/ranksQuery.d.ts +6 -0
- package/esm/methods/ranksQuery.d.ts.map +1 -0
- package/esm/methods/ranksQuery.js +12 -0
- package/esm/methods/removeDuplicatesQuery.d.ts +4 -0
- package/esm/methods/removeDuplicatesQuery.d.ts.map +1 -0
- package/esm/methods/removeDuplicatesQuery.js +12 -0
- package/esm/methods/removeMissing.d.ts +7 -0
- package/esm/methods/removeMissing.d.ts.map +1 -0
- package/esm/methods/removeMissing.js +21 -0
- package/esm/methods/removeMissingQuery.d.ts +7 -0
- package/esm/methods/removeMissingQuery.d.ts.map +1 -0
- package/esm/methods/removeMissingQuery.js +43 -0
- package/esm/methods/removeQuery.d.ts +4 -0
- package/esm/methods/removeQuery.d.ts.map +1 -0
- package/esm/methods/removeQuery.js +15 -0
- package/esm/methods/renameColumnQuery.d.ts +2 -0
- package/esm/methods/renameColumnQuery.d.ts.map +1 -0
- package/esm/methods/renameColumnQuery.js +7 -0
- package/esm/methods/replaceNullsQuery.d.ts +2 -0
- package/esm/methods/replaceNullsQuery.d.ts.map +1 -0
- package/esm/methods/replaceNullsQuery.js +10 -0
- package/esm/methods/replaceQuery.d.ts +5 -0
- package/esm/methods/replaceQuery.d.ts.map +1 -0
- package/esm/methods/replaceQuery.js +24 -0
- package/esm/methods/rollingQuery.d.ts +5 -0
- package/esm/methods/rollingQuery.d.ts.map +1 -0
- package/esm/methods/rollingQuery.js +33 -0
- package/esm/methods/roundQuery.d.ts +5 -0
- package/esm/methods/roundQuery.d.ts.map +1 -0
- package/esm/methods/roundQuery.js +16 -0
- package/esm/methods/selectRowsQuery.d.ts +5 -0
- package/esm/methods/selectRowsQuery.d.ts.map +1 -0
- package/esm/methods/selectRowsQuery.js +3 -0
- package/esm/methods/sortQuery.d.ts +8 -0
- package/esm/methods/sortQuery.d.ts.map +1 -0
- package/esm/methods/sortQuery.js +18 -0
- package/esm/methods/splitSpread.d.ts +5 -0
- package/esm/methods/splitSpread.d.ts.map +1 -0
- package/esm/methods/splitSpread.js +61 -0
- package/esm/methods/summarize.d.ts +13 -0
- package/esm/methods/summarize.d.ts.map +1 -0
- package/esm/methods/summarize.js +60 -0
- package/esm/methods/summarizeQuery.d.ts +7 -0
- package/esm/methods/summarizeQuery.d.ts.map +1 -0
- package/esm/methods/summarizeQuery.js +112 -0
- package/esm/methods/trimQuery.d.ts +5 -0
- package/esm/methods/trimQuery.d.ts.map +1 -0
- package/esm/methods/trimQuery.js +29 -0
- package/esm/methods/truncateQuery.d.ts +2 -0
- package/esm/methods/truncateQuery.d.ts.map +1 -0
- package/esm/methods/truncateQuery.js +3 -0
- package/esm/methods/upperQuery.d.ts +2 -0
- package/esm/methods/upperQuery.d.ts.map +1 -0
- package/esm/methods/upperQuery.js +7 -0
- package/esm/methods/writeDataQuery.d.ts +5 -0
- package/esm/methods/writeDataQuery.d.ts.map +1 -0
- package/esm/methods/writeDataQuery.js +44 -0
- package/esm/methods/writeGeoDataQuery.d.ts +4 -0
- package/esm/methods/writeGeoDataQuery.d.ts.map +1 -0
- package/esm/methods/writeGeoDataQuery.js +16 -0
- package/esm/methods/zScoreQuery.d.ts +5 -0
- package/esm/methods/zScoreQuery.d.ts.map +1 -0
- package/esm/methods/zScoreQuery.js +23 -0
- package/esm/package.json +3 -0
- package/package.json +27 -0
- package/script/class/Simple.d.ts +66 -0
- package/script/class/Simple.d.ts.map +1 -0
- package/script/class/Simple.js +97 -0
- package/script/class/SimpleDB.d.ts +487 -0
- package/script/class/SimpleDB.d.ts.map +1 -0
- package/script/class/SimpleDB.js +813 -0
- package/script/class/SimpleTable.d.ts +4408 -0
- package/script/class/SimpleTable.d.ts.map +1 -0
- package/script/class/SimpleTable.js +5407 -0
- package/script/helpers/accumulateQuery.d.ts +4 -0
- package/script/helpers/accumulateQuery.d.ts.map +1 -0
- package/script/helpers/accumulateQuery.js +21 -0
- package/script/helpers/camelCase.d.ts +30 -0
- package/script/helpers/camelCase.d.ts.map +1 -0
- package/script/helpers/camelCase.js +51 -0
- package/script/helpers/capitalize.d.ts +28 -0
- package/script/helpers/capitalize.d.ts.map +1 -0
- package/script/helpers/capitalize.js +36 -0
- package/script/helpers/checkVssIndexes.d.ts +2 -0
- package/script/helpers/checkVssIndexes.d.ts.map +1 -0
- package/script/helpers/checkVssIndexes.js +19 -0
- package/script/helpers/cleanCache.d.ts +3 -0
- package/script/helpers/cleanCache.d.ts.map +1 -0
- package/script/helpers/cleanCache.js +20 -0
- package/script/helpers/cleanPath.d.ts +2 -0
- package/script/helpers/cleanPath.d.ts.map +1 -0
- package/script/helpers/cleanPath.js +6 -0
- package/script/helpers/cleanSQL.d.ts +2 -0
- package/script/helpers/cleanSQL.d.ts.map +1 -0
- package/script/helpers/cleanSQL.js +27 -0
- package/script/helpers/concatenateRowQuery.d.ts +2 -0
- package/script/helpers/concatenateRowQuery.d.ts.map +1 -0
- package/script/helpers/concatenateRowQuery.js +12 -0
- package/script/helpers/convertForJS.d.ts +6 -0
- package/script/helpers/convertForJS.d.ts.map +1 -0
- package/script/helpers/convertForJS.js +42 -0
- package/script/helpers/createDirectory.d.ts +2 -0
- package/script/helpers/createDirectory.d.ts.map +1 -0
- package/script/helpers/createDirectory.js +13 -0
- package/script/helpers/csvFormat.d.ts +3 -0
- package/script/helpers/csvFormat.d.ts.map +1 -0
- package/script/helpers/csvFormat.js +168 -0
- package/script/helpers/dataToArrays.d.ts +51 -0
- package/script/helpers/dataToArrays.d.ts.map +1 -0
- package/script/helpers/dataToArrays.js +58 -0
- package/script/helpers/extractTypes.d.ts +6 -0
- package/script/helpers/extractTypes.d.ts.map +1 -0
- package/script/helpers/extractTypes.js +14 -0
- package/script/helpers/findGeoColumn.d.ts +3 -0
- package/script/helpers/findGeoColumn.d.ts.map +1 -0
- package/script/helpers/findGeoColumn.js +21 -0
- package/script/helpers/formatDate.d.ts +34 -0
- package/script/helpers/formatDate.d.ts.map +1 -0
- package/script/helpers/formatDate.js +72 -0
- package/script/helpers/formatNumber.d.ts +46 -0
- package/script/helpers/formatNumber.d.ts.map +1 -0
- package/script/helpers/formatNumber.js +125 -0
- package/script/helpers/getCombinations.d.ts +3 -0
- package/script/helpers/getCombinations.d.ts.map +1 -0
- package/script/helpers/getCombinations.js +26 -0
- package/script/helpers/getExtension.d.ts +2 -0
- package/script/helpers/getExtension.d.ts.map +1 -0
- package/script/helpers/getExtension.js +12 -0
- package/script/helpers/getIdenticalColumns.d.ts +2 -0
- package/script/helpers/getIdenticalColumns.d.ts.map +1 -0
- package/script/helpers/getIdenticalColumns.js +6 -0
- package/script/helpers/getName.d.ts +2 -0
- package/script/helpers/getName.d.ts.map +1 -0
- package/script/helpers/getName.js +17 -0
- package/script/helpers/getProjection.d.ts +3 -0
- package/script/helpers/getProjection.d.ts.map +1 -0
- package/script/helpers/getProjection.js +28 -0
- package/script/helpers/getProjectionParquet.d.ts +3 -0
- package/script/helpers/getProjectionParquet.d.ts.map +1 -0
- package/script/helpers/getProjectionParquet.js +30 -0
- package/script/helpers/index.d.ts +20 -0
- package/script/helpers/index.d.ts.map +1 -0
- package/script/helpers/index.js +30 -0
- package/script/helpers/keepNumericalColumns.d.ts +4 -0
- package/script/helpers/keepNumericalColumns.d.ts.map +1 -0
- package/script/helpers/keepNumericalColumns.js +16 -0
- package/script/helpers/logData.d.ts +6 -0
- package/script/helpers/logData.d.ts.map +1 -0
- package/script/helpers/logData.js +54 -0
- package/script/helpers/mergeOptions.d.ts +28 -0
- package/script/helpers/mergeOptions.d.ts.map +1 -0
- package/script/helpers/mergeOptions.js +15 -0
- package/script/helpers/nestQuery.d.ts +2 -0
- package/script/helpers/nestQuery.d.ts.map +1 -0
- package/script/helpers/nestQuery.js +19 -0
- package/script/helpers/parseDuckDBType.d.ts +2 -0
- package/script/helpers/parseDuckDBType.d.ts.map +1 -0
- package/script/helpers/parseDuckDBType.js +41 -0
- package/script/helpers/parseTypes.d.ts +2 -0
- package/script/helpers/parseTypes.d.ts.map +1 -0
- package/script/helpers/parseTypes.js +38 -0
- package/script/helpers/parseValue.d.ts +2 -0
- package/script/helpers/parseValue.d.ts.map +1 -0
- package/script/helpers/parseValue.js +23 -0
- package/script/helpers/prettyDuration.d.ts +55 -0
- package/script/helpers/prettyDuration.d.ts.map +1 -0
- package/script/helpers/prettyDuration.js +148 -0
- package/script/helpers/printTable.d.ts +47 -0
- package/script/helpers/printTable.d.ts.map +1 -0
- package/script/helpers/printTable.js +223 -0
- package/script/helpers/queryDB.d.ts +19 -0
- package/script/helpers/queryDB.d.ts.map +1 -0
- package/script/helpers/queryDB.js +68 -0
- package/script/helpers/rewind.d.ts +3 -0
- package/script/helpers/rewind.d.ts.map +1 -0
- package/script/helpers/rewind.js +1295 -0
- package/script/helpers/runQuery.d.ts +14 -0
- package/script/helpers/runQuery.d.ts.map +1 -0
- package/script/helpers/runQuery.js +32 -0
- package/script/helpers/setDbProps.d.ts +3 -0
- package/script/helpers/setDbProps.d.ts.map +1 -0
- package/script/helpers/setDbProps.js +28 -0
- package/script/helpers/shouldFlipBeforeExport.d.ts +2 -0
- package/script/helpers/shouldFlipBeforeExport.d.ts.map +1 -0
- package/script/helpers/shouldFlipBeforeExport.js +6 -0
- package/script/helpers/stringToArray.d.ts +2 -0
- package/script/helpers/stringToArray.d.ts.map +1 -0
- package/script/helpers/stringToArray.js +14 -0
- package/script/helpers/stringifyDates.d.ts +5 -0
- package/script/helpers/stringifyDates.d.ts.map +1 -0
- package/script/helpers/stringifyDates.js +17 -0
- package/script/helpers/stringifyDatesInvert.d.ts +5 -0
- package/script/helpers/stringifyDatesInvert.d.ts.map +1 -0
- package/script/helpers/stringifyDatesInvert.js +17 -0
- package/script/helpers/unifyColumns.d.ts +9 -0
- package/script/helpers/unifyColumns.d.ts.map +1 -0
- package/script/helpers/unifyColumns.js +24 -0
- package/script/helpers/unnestQuery.d.ts +2 -0
- package/script/helpers/unnestQuery.d.ts.map +1 -0
- package/script/helpers/unnestQuery.js +11 -0
- package/script/helpers/wrapString.d.ts +35 -0
- package/script/helpers/wrapString.d.ts.map +1 -0
- package/script/helpers/wrapString.js +86 -0
- package/script/helpers/writeDataAsArrays.d.ts +3 -0
- package/script/helpers/writeDataAsArrays.d.ts.map +1 -0
- package/script/helpers/writeDataAsArrays.js +19 -0
- package/script/helpers/writeProjectionsAndIndexes.d.ts +3 -0
- package/script/helpers/writeProjectionsAndIndexes.d.ts.map +1 -0
- package/script/helpers/writeProjectionsAndIndexes.js +32 -0
- package/script/index.d.ts +31 -0
- package/script/index.d.ts.map +1 -0
- package/script/index.js +38 -0
- package/script/methods/aggregateGeoQuery.d.ts +5 -0
- package/script/methods/aggregateGeoQuery.d.ts.map +1 -0
- package/script/methods/aggregateGeoQuery.js +30 -0
- package/script/methods/binsQuery.d.ts +5 -0
- package/script/methods/binsQuery.d.ts.map +1 -0
- package/script/methods/binsQuery.js +43 -0
- package/script/methods/bm25.d.ts +17 -0
- package/script/methods/bm25.d.ts.map +1 -0
- package/script/methods/bm25.js +54 -0
- package/script/methods/cache.d.ts +6 -0
- package/script/methods/cache.d.ts.map +1 -0
- package/script/methods/cache.js +139 -0
- package/script/methods/capitalizeQuery.d.ts +2 -0
- package/script/methods/capitalizeQuery.d.ts.map +1 -0
- package/script/methods/capitalizeQuery.js +11 -0
- package/script/methods/cloneColumn.d.ts +4 -0
- package/script/methods/cloneColumn.d.ts.map +1 -0
- package/script/methods/cloneColumn.js +16 -0
- package/script/methods/cloneQuery.d.ts +4 -0
- package/script/methods/cloneQuery.d.ts.map +1 -0
- package/script/methods/cloneQuery.js +9 -0
- package/script/methods/concatenateQuery.d.ts +4 -0
- package/script/methods/concatenateQuery.d.ts.map +1 -0
- package/script/methods/concatenateQuery.js +16 -0
- package/script/methods/convertQuery.d.ts +7 -0
- package/script/methods/convertQuery.d.ts.map +1 -0
- package/script/methods/convertQuery.js +84 -0
- package/script/methods/correlations.d.ts +9 -0
- package/script/methods/correlations.d.ts.map +1 -0
- package/script/methods/correlations.js +46 -0
- package/script/methods/correlationsQuery.d.ts +5 -0
- package/script/methods/correlationsQuery.d.ts.map +1 -0
- package/script/methods/correlationsQuery.js +32 -0
- package/script/methods/createFtsIndex.d.ts +11 -0
- package/script/methods/createFtsIndex.d.ts.map +1 -0
- package/script/methods/createFtsIndex.js +34 -0
- package/script/methods/createVssIndex.d.ts +9 -0
- package/script/methods/createVssIndex.d.ts.map +1 -0
- package/script/methods/createVssIndex.js +44 -0
- package/script/methods/crossJoinQuery.d.ts +4 -0
- package/script/methods/crossJoinQuery.d.ts.map +1 -0
- package/script/methods/crossJoinQuery.js +6 -0
- package/script/methods/distanceQuery.d.ts +6 -0
- package/script/methods/distanceQuery.d.ts.map +1 -0
- package/script/methods/distanceQuery.js +45 -0
- package/script/methods/fill.d.ts +7 -0
- package/script/methods/fill.d.ts.map +1 -0
- package/script/methods/fill.js +66 -0
- package/script/methods/fuzzyClean.d.ts +7 -0
- package/script/methods/fuzzyClean.d.ts.map +1 -0
- package/script/methods/fuzzyClean.js +200 -0
- package/script/methods/fuzzyJoin.d.ts +8 -0
- package/script/methods/fuzzyJoin.d.ts.map +1 -0
- package/script/methods/fuzzyJoin.js +63 -0
- package/script/methods/fuzzyJoinQuery.d.ts +2 -0
- package/script/methods/fuzzyJoinQuery.d.ts.map +1 -0
- package/script/methods/fuzzyJoinQuery.js +22 -0
- package/script/methods/getBottom.d.ts +8 -0
- package/script/methods/getBottom.d.ts.map +1 -0
- package/script/methods/getBottom.js +28 -0
- package/script/methods/getColumns.d.ts +3 -0
- package/script/methods/getColumns.d.ts.map +1 -0
- package/script/methods/getColumns.js +21 -0
- package/script/methods/getDescription.d.ts +9 -0
- package/script/methods/getDescription.d.ts.map +1 -0
- package/script/methods/getDescription.js +23 -0
- package/script/methods/getFirstRow.d.ts +7 -0
- package/script/methods/getFirstRow.d.ts.map +1 -0
- package/script/methods/getFirstRow.js +21 -0
- package/script/methods/getGeoData.d.ts +17 -0
- package/script/methods/getGeoData.d.ts.map +1 -0
- package/script/methods/getGeoData.js +47 -0
- package/script/methods/getLastRow.d.ts +7 -0
- package/script/methods/getLastRow.d.ts.map +1 -0
- package/script/methods/getLastRow.js +25 -0
- package/script/methods/getMax.d.ts +3 -0
- package/script/methods/getMax.d.ts.map +1 -0
- package/script/methods/getMax.js +24 -0
- package/script/methods/getMean.d.ts +5 -0
- package/script/methods/getMean.d.ts.map +1 -0
- package/script/methods/getMean.js +23 -0
- package/script/methods/getMedian.d.ts +5 -0
- package/script/methods/getMedian.d.ts.map +1 -0
- package/script/methods/getMedian.js +23 -0
- package/script/methods/getMin.d.ts +3 -0
- package/script/methods/getMin.d.ts.map +1 -0
- package/script/methods/getMin.js +24 -0
- package/script/methods/getNbCharacters.d.ts +3 -0
- package/script/methods/getNbCharacters.d.ts.map +1 -0
- package/script/methods/getNbCharacters.js +21 -0
- package/script/methods/getNbRows.d.ts +3 -0
- package/script/methods/getNbRows.d.ts.map +1 -0
- package/script/methods/getNbRows.js +21 -0
- package/script/methods/getQuantile.d.ts +5 -0
- package/script/methods/getQuantile.d.ts.map +1 -0
- package/script/methods/getQuantile.js +23 -0
- package/script/methods/getSkew.d.ts +5 -0
- package/script/methods/getSkew.d.ts.map +1 -0
- package/script/methods/getSkew.js +23 -0
- package/script/methods/getStdDev.d.ts +5 -0
- package/script/methods/getStdDev.d.ts.map +1 -0
- package/script/methods/getStdDev.js +23 -0
- package/script/methods/getSum.d.ts +3 -0
- package/script/methods/getSum.d.ts.map +1 -0
- package/script/methods/getSum.js +21 -0
- package/script/methods/getTableNames.d.ts +3 -0
- package/script/methods/getTableNames.d.ts.map +1 -0
- package/script/methods/getTableNames.js +21 -0
- package/script/methods/getTop.d.ts +7 -0
- package/script/methods/getTop.d.ts.map +1 -0
- package/script/methods/getTop.js +20 -0
- package/script/methods/getTypes.d.ts +5 -0
- package/script/methods/getTypes.d.ts.map +1 -0
- package/script/methods/getTypes.js +19 -0
- package/script/methods/getUniques.d.ts +3 -0
- package/script/methods/getUniques.d.ts.map +1 -0
- package/script/methods/getUniques.js +21 -0
- package/script/methods/getValues.d.ts +3 -0
- package/script/methods/getValues.d.ts.map +1 -0
- package/script/methods/getValues.js +21 -0
- package/script/methods/getVar.d.ts +5 -0
- package/script/methods/getVar.d.ts.map +1 -0
- package/script/methods/getVar.js +23 -0
- package/script/methods/insertRowsQuery.d.ts +4 -0
- package/script/methods/insertRowsQuery.d.ts.map +1 -0
- package/script/methods/insertRowsQuery.js +17 -0
- package/script/methods/join.d.ts +7 -0
- package/script/methods/join.d.ts.map +1 -0
- package/script/methods/join.js +69 -0
- package/script/methods/joinGeo.d.ts +10 -0
- package/script/methods/joinGeo.d.ts.map +1 -0
- package/script/methods/joinGeo.js +82 -0
- package/script/methods/joinGeoQuery.d.ts +2 -0
- package/script/methods/joinGeoQuery.d.ts.map +1 -0
- package/script/methods/joinGeoQuery.js +58 -0
- package/script/methods/joinQuery.d.ts +2 -0
- package/script/methods/joinQuery.d.ts.map +1 -0
- package/script/methods/joinQuery.js +24 -0
- package/script/methods/keepQuery.d.ts +4 -0
- package/script/methods/keepQuery.d.ts.map +1 -0
- package/script/methods/keepQuery.js +21 -0
- package/script/methods/linearRegressionQuery.d.ts +5 -0
- package/script/methods/linearRegressionQuery.d.ts.map +1 -0
- package/script/methods/linearRegressionQuery.js +43 -0
- package/script/methods/linearRegressions.d.ts +9 -0
- package/script/methods/linearRegressions.d.ts.map +1 -0
- package/script/methods/linearRegressions.js +49 -0
- package/script/methods/loadArray.d.ts +5 -0
- package/script/methods/loadArray.d.ts.map +1 -0
- package/script/methods/loadArray.js +84 -0
- package/script/methods/loadDataQuery.d.ts +23 -0
- package/script/methods/loadDataQuery.d.ts.map +1 -0
- package/script/methods/loadDataQuery.js +83 -0
- package/script/methods/lowerQuery.d.ts +2 -0
- package/script/methods/lowerQuery.d.ts.map +1 -0
- package/script/methods/lowerQuery.js +10 -0
- package/script/methods/normalizeQuery.d.ts +5 -0
- package/script/methods/normalizeQuery.d.ts.map +1 -0
- package/script/methods/normalizeQuery.js +28 -0
- package/script/methods/normalizeString.d.ts +5 -0
- package/script/methods/normalizeString.d.ts.map +1 -0
- package/script/methods/normalizeString.js +32 -0
- package/script/methods/outliersIQRQuery.d.ts +4 -0
- package/script/methods/outliersIQRQuery.d.ts.map +1 -0
- package/script/methods/outliersIQRQuery.js +37 -0
- package/script/methods/proportionsHorizontalQuery.d.ts +5 -0
- package/script/methods/proportionsHorizontalQuery.d.ts.map +1 -0
- package/script/methods/proportionsHorizontalQuery.js +18 -0
- package/script/methods/proportionsVerticalQuery.d.ts +5 -0
- package/script/methods/proportionsVerticalQuery.d.ts.map +1 -0
- package/script/methods/proportionsVerticalQuery.js +25 -0
- package/script/methods/quantilesQuery.d.ts +4 -0
- package/script/methods/quantilesQuery.d.ts.map +1 -0
- package/script/methods/quantilesQuery.js +18 -0
- package/script/methods/ranksQuery.d.ts +6 -0
- package/script/methods/ranksQuery.d.ts.map +1 -0
- package/script/methods/ranksQuery.js +18 -0
- package/script/methods/removeDuplicatesQuery.d.ts +4 -0
- package/script/methods/removeDuplicatesQuery.d.ts.map +1 -0
- package/script/methods/removeDuplicatesQuery.js +18 -0
- package/script/methods/removeMissing.d.ts +7 -0
- package/script/methods/removeMissing.d.ts.map +1 -0
- package/script/methods/removeMissing.js +27 -0
- package/script/methods/removeMissingQuery.d.ts +7 -0
- package/script/methods/removeMissingQuery.d.ts.map +1 -0
- package/script/methods/removeMissingQuery.js +46 -0
- package/script/methods/removeQuery.d.ts +4 -0
- package/script/methods/removeQuery.d.ts.map +1 -0
- package/script/methods/removeQuery.js +21 -0
- package/script/methods/renameColumnQuery.d.ts +2 -0
- package/script/methods/renameColumnQuery.d.ts.map +1 -0
- package/script/methods/renameColumnQuery.js +10 -0
- package/script/methods/replaceNullsQuery.d.ts +2 -0
- package/script/methods/replaceNullsQuery.d.ts.map +1 -0
- package/script/methods/replaceNullsQuery.js +16 -0
- package/script/methods/replaceQuery.d.ts +5 -0
- package/script/methods/replaceQuery.d.ts.map +1 -0
- package/script/methods/replaceQuery.js +27 -0
- package/script/methods/rollingQuery.d.ts +5 -0
- package/script/methods/rollingQuery.d.ts.map +1 -0
- package/script/methods/rollingQuery.js +39 -0
- package/script/methods/roundQuery.d.ts +5 -0
- package/script/methods/roundQuery.d.ts.map +1 -0
- package/script/methods/roundQuery.js +19 -0
- package/script/methods/selectRowsQuery.d.ts +5 -0
- package/script/methods/selectRowsQuery.d.ts.map +1 -0
- package/script/methods/selectRowsQuery.js +6 -0
- package/script/methods/sortQuery.d.ts +8 -0
- package/script/methods/sortQuery.d.ts.map +1 -0
- package/script/methods/sortQuery.js +21 -0
- package/script/methods/splitSpread.d.ts +5 -0
- package/script/methods/splitSpread.d.ts.map +1 -0
- package/script/methods/splitSpread.js +67 -0
- package/script/methods/summarize.d.ts +13 -0
- package/script/methods/summarize.d.ts.map +1 -0
- package/script/methods/summarize.js +66 -0
- package/script/methods/summarizeQuery.d.ts +7 -0
- package/script/methods/summarizeQuery.d.ts.map +1 -0
- package/script/methods/summarizeQuery.js +115 -0
- package/script/methods/trimQuery.d.ts +5 -0
- package/script/methods/trimQuery.d.ts.map +1 -0
- package/script/methods/trimQuery.js +32 -0
- package/script/methods/truncateQuery.d.ts +2 -0
- package/script/methods/truncateQuery.d.ts.map +1 -0
- package/script/methods/truncateQuery.js +6 -0
- package/script/methods/upperQuery.d.ts +2 -0
- package/script/methods/upperQuery.d.ts.map +1 -0
- package/script/methods/upperQuery.js +10 -0
- package/script/methods/writeDataQuery.d.ts +5 -0
- package/script/methods/writeDataQuery.d.ts.map +1 -0
- package/script/methods/writeDataQuery.js +50 -0
- package/script/methods/writeGeoDataQuery.d.ts +4 -0
- package/script/methods/writeGeoDataQuery.d.ts.map +1 -0
- package/script/methods/writeGeoDataQuery.js +22 -0
- package/script/methods/zScoreQuery.d.ts +5 -0
- package/script/methods/zScoreQuery.d.ts.map +1 -0
- package/script/methods/zScoreQuery.js +29 -0
- package/script/package.json +3 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"distanceQuery.d.ts","sourceRoot":"","sources":["../../src/methods/distanceQuery.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,aAAa,CACnC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IACP,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC;IAClB,MAAM,CAAC,EAAE,KAAK,GAAG,UAAU,GAAG,WAAW,CAAC;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACd,UAsDP"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = distanceQuery;
|
|
4
|
+
function distanceQuery(table, column1, column2, newColumn, options = {}) {
|
|
5
|
+
options.method = options.method ?? "srs";
|
|
6
|
+
if (options.method === "srs" && typeof options.unit === "string") {
|
|
7
|
+
throw new Error("Using the SRS unit. You can't specify options.unit unless you set options.method to 'spheroid' or 'haversine'.");
|
|
8
|
+
}
|
|
9
|
+
else if (["spheroid", "haversine"].includes(options.method)) {
|
|
10
|
+
options.unit = options.unit ?? "m";
|
|
11
|
+
if (!["m", "km"].includes(options.unit)) {
|
|
12
|
+
throw new Error(`Unknown unit ${options.unit}. Choose between 'm' and 'km'.`);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
let query = `ALTER TABLE "${table}" ADD "${newColumn}" DOUBLE; UPDATE "${table}" SET "${newColumn}" = `;
|
|
16
|
+
if (options.method === "srs") {
|
|
17
|
+
if (typeof options.decimals === "number") {
|
|
18
|
+
query +=
|
|
19
|
+
`ROUND(ST_Distance("${column1}", "${column2}"), ${options.decimals})`;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
query += `ST_Distance("${column1}", "${column2}")`;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
else if (options.method === "haversine") {
|
|
26
|
+
if (typeof options.decimals === "number") {
|
|
27
|
+
query += `ROUND(ST_Distance_Sphere("${column1}", "${column2}") ${options.unit === "km" ? "/ 1000" : ""}, ${options.decimals});`;
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
query += `ST_Distance_Sphere("${column1}", "${column2}") ${options.unit === "km" ? "/ 1000" : ""};`;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
else if (options.method === "spheroid") {
|
|
34
|
+
if (typeof options.decimals === "number") {
|
|
35
|
+
query += `ROUND(ST_Distance_Spheroid("${column1}", "${column2}") ${options.unit === "km" ? "/ 1000" : ""}, ${options.decimals});`;
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
query += `ST_Distance_Spheroid("${column1}", "${column2}") ${options.unit === "km" ? "/ 1000" : ""};`;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
throw new Error(`Uknown method ${options.method}. Choose between 'srs', 'haversine' and 'spheroid'.`);
|
|
43
|
+
}
|
|
44
|
+
return query;
|
|
45
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type SimpleTable from "../class/SimpleTable.js";
|
|
2
|
+
export default function fill(simpleTable: SimpleTable, columns: string | string[], options?: {
|
|
3
|
+
categories?: string | string[];
|
|
4
|
+
interpolate?: boolean;
|
|
5
|
+
interpolateBy?: string;
|
|
6
|
+
}): Promise<void>;
|
|
7
|
+
//# sourceMappingURL=fill.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fill.d.ts","sourceRoot":"","sources":["../../src/methods/fill.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AAEvD,wBAA8B,IAAI,CAChC,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,GAAE;IACP,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACnB,iBAiFP"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.default = fill;
|
|
7
|
+
const mergeOptions_js_1 = __importDefault(require("../helpers/mergeOptions.js"));
|
|
8
|
+
const queryDB_js_1 = __importDefault(require("../helpers/queryDB.js"));
|
|
9
|
+
const stringToArray_js_1 = __importDefault(require("../helpers/stringToArray.js"));
|
|
10
|
+
async function fill(simpleTable, columns, options = {}) {
|
|
11
|
+
const categories = options.categories
|
|
12
|
+
? (0, stringToArray_js_1.default)(options.categories)
|
|
13
|
+
: [];
|
|
14
|
+
const tempRowCol = `rowNumberForFill`;
|
|
15
|
+
if (options.interpolateBy && options.interpolate === false) {
|
|
16
|
+
throw new Error(`interpolate cannot be false when interpolateBy is set.`);
|
|
17
|
+
}
|
|
18
|
+
if (options.interpolate || options.interpolateBy) {
|
|
19
|
+
const cols = (0, stringToArray_js_1.default)(columns);
|
|
20
|
+
let orderCol;
|
|
21
|
+
let excludeList;
|
|
22
|
+
if (options.interpolateBy) {
|
|
23
|
+
orderCol = options.interpolateBy;
|
|
24
|
+
excludeList = cols.join(", ");
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
await simpleTable.addRowNumber(tempRowCol);
|
|
28
|
+
orderCol = tempRowCol;
|
|
29
|
+
excludeList = [`"${tempRowCol}"`, ...cols].join(", ");
|
|
30
|
+
}
|
|
31
|
+
const overClause = categories.length > 0
|
|
32
|
+
? `(PARTITION BY ${categories.map((d) => `"${d}"`).join(", ")})`
|
|
33
|
+
: `()`;
|
|
34
|
+
const selectList = cols
|
|
35
|
+
.map((col) => `fill(${col} ORDER BY "${orderCol}") OVER ${overClause} as ${col}`)
|
|
36
|
+
.join(", ");
|
|
37
|
+
await (0, queryDB_js_1.default)(simpleTable, `CREATE OR REPLACE TABLE "${simpleTable.name}" AS SELECT * EXCLUDE(${excludeList}), ${selectList} FROM "${simpleTable.name}" ORDER BY "${orderCol}";`, (0, mergeOptions_js_1.default)(simpleTable, {
|
|
38
|
+
table: simpleTable.name,
|
|
39
|
+
method: "fill()",
|
|
40
|
+
parameters: { columns, ...options },
|
|
41
|
+
}));
|
|
42
|
+
}
|
|
43
|
+
else if (categories.length > 0) {
|
|
44
|
+
const partition = `PARTITION BY ${categories.map((d) => `"${d}"`).join(", ")}`;
|
|
45
|
+
await simpleTable.addRowNumber(tempRowCol);
|
|
46
|
+
const cols = (0, stringToArray_js_1.default)(columns);
|
|
47
|
+
const excludeList = [`"${tempRowCol}"`, ...cols].join(", ");
|
|
48
|
+
const selectList = cols
|
|
49
|
+
.map((col) => `COALESCE(${col}, LAG(${col} IGNORE NULLS) OVER(${partition} ORDER BY "${tempRowCol}")) as ${col}`)
|
|
50
|
+
.join(", ");
|
|
51
|
+
await (0, queryDB_js_1.default)(simpleTable, `CREATE OR REPLACE TABLE "${simpleTable.name}" AS SELECT * EXCLUDE(${excludeList}), ${selectList} FROM "${simpleTable.name}" ORDER BY "${tempRowCol}";`, (0, mergeOptions_js_1.default)(simpleTable, {
|
|
52
|
+
table: simpleTable.name,
|
|
53
|
+
method: "fill()",
|
|
54
|
+
parameters: { columns, ...options },
|
|
55
|
+
}));
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
await (0, queryDB_js_1.default)(simpleTable, (0, stringToArray_js_1.default)(columns)
|
|
59
|
+
.map((col) => `CREATE OR REPLACE TABLE "${simpleTable.name}" AS SELECT * EXCLUDE(${col}), COALESCE(${col}, LAG(${col} IGNORE NULLS) OVER()) as ${col} FROM "${simpleTable.name}";`)
|
|
60
|
+
.join("\n"), (0, mergeOptions_js_1.default)(simpleTable, {
|
|
61
|
+
table: simpleTable.name,
|
|
62
|
+
method: "fill()",
|
|
63
|
+
parameters: { columns, ...options },
|
|
64
|
+
}));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type SimpleTable from "../class/SimpleTable.js";
|
|
2
|
+
export default function fuzzyClean(table: SimpleTable, column: string, newColumn: string, options?: {
|
|
3
|
+
method?: "ratio" | "partial_ratio" | "token_sort_ratio" | "token_set_ratio";
|
|
4
|
+
threshold?: number;
|
|
5
|
+
keep?: "mostCommon" | "longestString" | "shortestString" | "mostCentral" | "maxScore";
|
|
6
|
+
}): Promise<void>;
|
|
7
|
+
//# sourceMappingURL=fuzzyClean.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fuzzyClean.d.ts","sourceRoot":"","sources":["../../src/methods/fuzzyClean.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AAIvD,wBAA8B,UAAU,CACtC,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IACP,MAAM,CAAC,EACH,OAAO,GACP,eAAe,GACf,kBAAkB,GAClB,iBAAiB,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EACD,YAAY,GACZ,eAAe,GACf,gBAAgB,GAChB,aAAa,GACb,UAAU,CAAC;CACX,GACL,OAAO,CAAC,IAAI,CAAC,CAyNf"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.default = fuzzyClean;
|
|
7
|
+
const mergeOptions_js_1 = __importDefault(require("../helpers/mergeOptions.js"));
|
|
8
|
+
const queryDB_js_1 = __importDefault(require("../helpers/queryDB.js"));
|
|
9
|
+
async function fuzzyClean(table, column, newColumn, options = {}) {
|
|
10
|
+
const method = options.method ?? "ratio";
|
|
11
|
+
const threshold = options.threshold ?? 80;
|
|
12
|
+
const keep = options.keep ?? "mostCommon";
|
|
13
|
+
// Single round trip: compute fuzzy pairs and embed counts for both sides.
|
|
14
|
+
// Only values that appear in at least one pair above the threshold can be
|
|
15
|
+
// normalized — singletons need no processing at all.
|
|
16
|
+
const pairsData = await (0, queryDB_js_1.default)(table, `INSTALL rapidfuzz FROM community; LOAD rapidfuzz;
|
|
17
|
+
WITH uniques AS (
|
|
18
|
+
SELECT "${column}" AS value, COUNT(*) AS cnt
|
|
19
|
+
FROM "${table.name}"
|
|
20
|
+
WHERE "${column}" IS NOT NULL
|
|
21
|
+
GROUP BY "${column}"
|
|
22
|
+
)
|
|
23
|
+
SELECT
|
|
24
|
+
a.value AS left_value,
|
|
25
|
+
b.value AS right_value,
|
|
26
|
+
a.cnt AS left_cnt,
|
|
27
|
+
b.cnt AS right_cnt,
|
|
28
|
+
rapidfuzz_${method}(a.value, b.value) AS score
|
|
29
|
+
FROM uniques a
|
|
30
|
+
JOIN uniques b
|
|
31
|
+
ON rapidfuzz_${method}(a.value, b.value) >= ${threshold}
|
|
32
|
+
AND a.value < b.value`, (0, mergeOptions_js_1.default)(table, {
|
|
33
|
+
table: table.name,
|
|
34
|
+
method: "fuzzyClean()",
|
|
35
|
+
parameters: { column, newColumn, options },
|
|
36
|
+
returnDataFrom: "query",
|
|
37
|
+
}));
|
|
38
|
+
const pairs = pairsData ?? [];
|
|
39
|
+
if (pairs.length === 0)
|
|
40
|
+
return; // Nothing to normalize.
|
|
41
|
+
// Build count map from the pairs — no separate query needed.
|
|
42
|
+
const countMap = new Map();
|
|
43
|
+
for (const { left_value, left_cnt, right_value, right_cnt } of pairs) {
|
|
44
|
+
countMap.set(left_value, Number(left_cnt));
|
|
45
|
+
countMap.set(right_value, Number(right_cnt));
|
|
46
|
+
}
|
|
47
|
+
// Union-Find — only over values that actually participate in a pair.
|
|
48
|
+
const parent = new Map();
|
|
49
|
+
const find = (x) => {
|
|
50
|
+
if (!parent.has(x))
|
|
51
|
+
parent.set(x, x);
|
|
52
|
+
if (parent.get(x) !== x)
|
|
53
|
+
parent.set(x, find(parent.get(x)));
|
|
54
|
+
return parent.get(x);
|
|
55
|
+
};
|
|
56
|
+
const union = (a, b) => {
|
|
57
|
+
const ra = find(a);
|
|
58
|
+
const rb = find(b);
|
|
59
|
+
if (ra !== rb)
|
|
60
|
+
parent.set(ra, rb);
|
|
61
|
+
};
|
|
62
|
+
for (const v of countMap.keys())
|
|
63
|
+
find(v);
|
|
64
|
+
for (const { left_value, right_value } of pairs) {
|
|
65
|
+
union(left_value, right_value);
|
|
66
|
+
}
|
|
67
|
+
// Group values by their cluster root.
|
|
68
|
+
const clusters = new Map();
|
|
69
|
+
for (const v of countMap.keys()) {
|
|
70
|
+
const root = find(v);
|
|
71
|
+
if (!clusters.has(root))
|
|
72
|
+
clusters.set(root, []);
|
|
73
|
+
clusters.get(root).push(v);
|
|
74
|
+
}
|
|
75
|
+
// Pick the canonical value for each cluster.
|
|
76
|
+
const replacement = new Map();
|
|
77
|
+
for (const members of clusters.values()) {
|
|
78
|
+
if (members.length === 1)
|
|
79
|
+
continue; // All pairs are already canonical — skip.
|
|
80
|
+
// Score sums and per-member max scores are computed lazily — only when
|
|
81
|
+
// actually needed as a primary criterion or tie-breaker.
|
|
82
|
+
//
|
|
83
|
+
// scoreSum: total similarity to all other cluster members (used by
|
|
84
|
+
// "mostCentral" as primary, and as tie-breaker for all strategies).
|
|
85
|
+
// scoreMax: highest single pairwise score (used by "maxScore" as primary).
|
|
86
|
+
let scoreSum = null;
|
|
87
|
+
const getScoreSum = () => {
|
|
88
|
+
if (scoreSum === null) {
|
|
89
|
+
scoreSum = new Map(members.map((m) => [m, 0]));
|
|
90
|
+
for (const { left_value, right_value, score } of pairs) {
|
|
91
|
+
if (scoreSum.has(left_value) && scoreSum.has(right_value)) {
|
|
92
|
+
scoreSum.set(left_value, (scoreSum.get(left_value) ?? 0) + score);
|
|
93
|
+
scoreSum.set(right_value, (scoreSum.get(right_value) ?? 0) + score);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return scoreSum;
|
|
98
|
+
};
|
|
99
|
+
let scoreMax = null;
|
|
100
|
+
const getScoreMax = () => {
|
|
101
|
+
if (scoreMax === null) {
|
|
102
|
+
scoreMax = new Map(members.map((m) => [m, 0]));
|
|
103
|
+
for (const { left_value, right_value, score } of pairs) {
|
|
104
|
+
if (scoreMax.has(left_value) && scoreMax.has(right_value)) {
|
|
105
|
+
scoreMax.set(left_value, Math.max(scoreMax.get(left_value) ?? 0, score));
|
|
106
|
+
scoreMax.set(right_value, Math.max(scoreMax.get(right_value) ?? 0, score));
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return scoreMax;
|
|
111
|
+
};
|
|
112
|
+
// Sum-based comparator: highest total similarity, then alphabetical.
|
|
113
|
+
const byScore = (a, b) => {
|
|
114
|
+
const sum = getScoreSum();
|
|
115
|
+
const sa = sum.get(a) ?? 0;
|
|
116
|
+
const sb = sum.get(b) ?? 0;
|
|
117
|
+
if (sa !== sb)
|
|
118
|
+
return sa > sb ? a : b;
|
|
119
|
+
return a <= b ? a : b; // alphabetical tie-break
|
|
120
|
+
};
|
|
121
|
+
// Max-based comparator: highest single-pair score, then sum, then alphabetical.
|
|
122
|
+
const byMaxScore = (a, b) => {
|
|
123
|
+
const mx = getScoreMax();
|
|
124
|
+
const ma = mx.get(a) ?? 0;
|
|
125
|
+
const mb = mx.get(b) ?? 0;
|
|
126
|
+
if (ma !== mb)
|
|
127
|
+
return ma > mb ? a : b;
|
|
128
|
+
return byScore(a, b); // sum then alphabetical tie-break
|
|
129
|
+
};
|
|
130
|
+
let canonical;
|
|
131
|
+
if (keep === "longestString") {
|
|
132
|
+
canonical = members.reduce((a, b) => {
|
|
133
|
+
if (a.length !== b.length)
|
|
134
|
+
return a.length > b.length ? a : b;
|
|
135
|
+
return byScore(a, b);
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
else if (keep === "shortestString") {
|
|
139
|
+
canonical = members.reduce((a, b) => {
|
|
140
|
+
if (a.length !== b.length)
|
|
141
|
+
return a.length < b.length ? a : b;
|
|
142
|
+
return byScore(a, b);
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
else if (keep === "mostCommon") {
|
|
146
|
+
canonical = members.reduce((a, b) => {
|
|
147
|
+
const ca = countMap.get(a) ?? 0;
|
|
148
|
+
const cb = countMap.get(b) ?? 0;
|
|
149
|
+
if (ca !== cb)
|
|
150
|
+
return ca > cb ? a : b;
|
|
151
|
+
return byScore(a, b);
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
else if (keep === "mostCentral") {
|
|
155
|
+
// Most central string — highest total similarity to all other cluster members.
|
|
156
|
+
canonical = members.reduce((a, b) => byScore(a, b));
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
// "maxScore": the string participating in the single highest-scoring pair.
|
|
160
|
+
canonical = members.reduce((a, b) => byMaxScore(a, b));
|
|
161
|
+
}
|
|
162
|
+
for (const m of members) {
|
|
163
|
+
if (m !== canonical)
|
|
164
|
+
replacement.set(m, canonical);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
if (replacement.size === 0)
|
|
168
|
+
return;
|
|
169
|
+
// Use a VALUES-based CTE for the UPDATE so DuckDB can use a hash join
|
|
170
|
+
// instead of evaluating a potentially huge CASE WHEN expression.
|
|
171
|
+
const escape = (s) => s.replace(/'/g, "''");
|
|
172
|
+
const valuesList = [...replacement.entries()]
|
|
173
|
+
.map(([from, to]) => `('${escape(from)}', '${escape(to)}')`)
|
|
174
|
+
.join(",\n ");
|
|
175
|
+
if (newColumn !== column) {
|
|
176
|
+
await (0, queryDB_js_1.default)(table, `ALTER TABLE "${table.name}" ADD "${newColumn}" VARCHAR;
|
|
177
|
+
UPDATE "${table.name}"
|
|
178
|
+
SET "${newColumn}" = "${column}";
|
|
179
|
+
WITH mapping(original, canonical) AS (VALUES ${valuesList})
|
|
180
|
+
UPDATE "${table.name}"
|
|
181
|
+
SET "${newColumn}" = m.canonical
|
|
182
|
+
FROM mapping m
|
|
183
|
+
WHERE "${table.name}"."${newColumn}" = m.original`, (0, mergeOptions_js_1.default)(table, {
|
|
184
|
+
table: table.name,
|
|
185
|
+
method: "fuzzyClean()",
|
|
186
|
+
parameters: { column, newColumn, options },
|
|
187
|
+
}));
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
await (0, queryDB_js_1.default)(table, `WITH mapping(original, canonical) AS (VALUES ${valuesList})
|
|
191
|
+
UPDATE "${table.name}"
|
|
192
|
+
SET "${column}" = m.canonical
|
|
193
|
+
FROM mapping m
|
|
194
|
+
WHERE "${table.name}"."${column}" = m.original`, (0, mergeOptions_js_1.default)(table, {
|
|
195
|
+
table: table.name,
|
|
196
|
+
method: "fuzzyClean()",
|
|
197
|
+
parameters: { column, newColumn, options },
|
|
198
|
+
}));
|
|
199
|
+
}
|
|
200
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type SimpleTable from "../class/SimpleTable.js";
|
|
2
|
+
export default function fuzzyJoin(leftTable: SimpleTable, rightTable: SimpleTable, leftColumn: string, rightColumn: string, options?: {
|
|
3
|
+
method?: "ratio" | "partial_ratio" | "token_sort_ratio" | "token_set_ratio";
|
|
4
|
+
threshold?: number;
|
|
5
|
+
similarityColumn?: string;
|
|
6
|
+
outputTable?: string | boolean;
|
|
7
|
+
}): Promise<SimpleTable>;
|
|
8
|
+
//# sourceMappingURL=fuzzyJoin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fuzzyJoin.d.ts","sourceRoot":"","sources":["../../src/methods/fuzzyJoin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AAMvD,wBAA8B,SAAS,CACrC,SAAS,EAAE,WAAW,EACtB,UAAU,EAAE,WAAW,EACvB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;IACP,MAAM,CAAC,EACH,OAAO,GACP,eAAe,GACf,kBAAkB,GAClB,iBAAiB,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC3B,wBAuFP"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.default = fuzzyJoin;
|
|
7
|
+
const getIdenticalColumns_js_1 = __importDefault(require("../helpers/getIdenticalColumns.js"));
|
|
8
|
+
const mergeOptions_js_1 = __importDefault(require("../helpers/mergeOptions.js"));
|
|
9
|
+
const queryDB_js_1 = __importDefault(require("../helpers/queryDB.js"));
|
|
10
|
+
const fuzzyJoinQuery_js_1 = __importDefault(require("./fuzzyJoinQuery.js"));
|
|
11
|
+
async function fuzzyJoin(leftTable, rightTable, leftColumn, rightColumn, options = {}) {
|
|
12
|
+
if (leftColumn === rightColumn) {
|
|
13
|
+
throw new Error(`The leftColumn and rightColumn have the same name "${leftColumn}". Rename one of them before doing the fuzzy join.`);
|
|
14
|
+
}
|
|
15
|
+
const leftCols = await leftTable.getColumns();
|
|
16
|
+
const rightCols = await rightTable.getColumns();
|
|
17
|
+
const identicalColumns = (0, getIdenticalColumns_js_1.default)(leftCols, rightCols);
|
|
18
|
+
// Any column shared between both tables — other than rightColumn (whose
|
|
19
|
+
// potential _1 duplicate we clean up) — would produce ambiguous output.
|
|
20
|
+
const identicalColumnsForError = identicalColumns.filter((d) => d !== rightColumn);
|
|
21
|
+
if (identicalColumnsForError.length > 0) {
|
|
22
|
+
if (identicalColumnsForError.length === 1) {
|
|
23
|
+
throw new Error(`The tables have columns with identical names. Rename or remove "${identicalColumnsForError[0]}" in one of the two tables before doing the fuzzy join.`);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
throw new Error(`The tables have columns with identical names. Rename or remove ${identicalColumnsForError.map((d) => `"${d}"`).join(", ")} in one of the two tables before doing the fuzzy join.`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
const method = options.method ?? "ratio";
|
|
30
|
+
const threshold = options.threshold ?? 80;
|
|
31
|
+
const similarityColumn = options.similarityColumn;
|
|
32
|
+
const outputTableName = typeof options.outputTable === "string"
|
|
33
|
+
? options.outputTable
|
|
34
|
+
: leftTable.name;
|
|
35
|
+
const sql = `INSTALL rapidfuzz FROM community; LOAD rapidfuzz;\n` +
|
|
36
|
+
(0, fuzzyJoinQuery_js_1.default)(leftTable.name, leftColumn, rightTable.name, rightColumn, method, threshold, outputTableName, similarityColumn);
|
|
37
|
+
await (0, queryDB_js_1.default)(leftTable, sql, (0, mergeOptions_js_1.default)(leftTable, {
|
|
38
|
+
table: outputTableName,
|
|
39
|
+
method: "fuzzyJoin()",
|
|
40
|
+
parameters: {
|
|
41
|
+
leftColumn,
|
|
42
|
+
rightColumn,
|
|
43
|
+
rightTable: rightTable.name,
|
|
44
|
+
options,
|
|
45
|
+
},
|
|
46
|
+
}));
|
|
47
|
+
const allProjections = {
|
|
48
|
+
...leftTable.projections,
|
|
49
|
+
...rightTable.projections,
|
|
50
|
+
};
|
|
51
|
+
const outputTable = typeof options.outputTable === "string"
|
|
52
|
+
? leftTable.sdb.newTable(options.outputTable, allProjections)
|
|
53
|
+
: leftTable;
|
|
54
|
+
outputTable.projections = allProjections;
|
|
55
|
+
// Remove the duplicate right-column produced when leftColumn === rightColumn
|
|
56
|
+
// (DuckDB suffixes it with _1 in SELECT *)
|
|
57
|
+
const outputCols = await outputTable.getColumns();
|
|
58
|
+
const duplicateCol = `${rightColumn}_1`;
|
|
59
|
+
if (outputCols.includes(duplicateCol)) {
|
|
60
|
+
await outputTable.removeColumns([duplicateCol]);
|
|
61
|
+
}
|
|
62
|
+
return outputTable;
|
|
63
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export default function fuzzyJoinQuery(leftTable: string, leftColumn: string, rightTable: string, rightColumn: string, method: "ratio" | "partial_ratio" | "token_sort_ratio" | "token_set_ratio", threshold: number, outputTable: string, similarityColumn: string | undefined): string;
|
|
2
|
+
//# sourceMappingURL=fuzzyJoinQuery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fuzzyJoinQuery.d.ts","sourceRoot":"","sources":["../../src/methods/fuzzyJoinQuery.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,cAAc,CACpC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,MAAM,EACF,OAAO,GACP,eAAe,GACf,kBAAkB,GAClB,iBAAiB,EACrB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,GAAG,SAAS,UAsBrC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = fuzzyJoinQuery;
|
|
4
|
+
function fuzzyJoinQuery(leftTable, leftColumn, rightTable, rightColumn, method, threshold, outputTable, similarityColumn) {
|
|
5
|
+
const fn = `ROUND(rapidfuzz_${method}("${leftTable}"."${leftColumn}", "${rightTable}"."${rightColumn}"), 2)`;
|
|
6
|
+
if (similarityColumn) {
|
|
7
|
+
return `CREATE OR REPLACE TABLE "${outputTable}" AS
|
|
8
|
+
SELECT * EXCLUDE ("_sda_score"), "_sda_score" AS "${similarityColumn}"
|
|
9
|
+
FROM (
|
|
10
|
+
SELECT "${leftTable}".*, "${rightTable}".*, ${fn} AS "_sda_score"
|
|
11
|
+
FROM "${leftTable}" LEFT JOIN "${rightTable}" ON ${fn} >= ${threshold}
|
|
12
|
+
) _sda
|
|
13
|
+
ORDER BY "${leftColumn}", "_sda_score" DESC;\n`;
|
|
14
|
+
}
|
|
15
|
+
return `CREATE OR REPLACE TABLE "${outputTable}" AS
|
|
16
|
+
SELECT *
|
|
17
|
+
FROM (
|
|
18
|
+
SELECT "${leftTable}".*, "${rightTable}".*
|
|
19
|
+
FROM "${leftTable}" LEFT JOIN "${rightTable}" ON ${fn} >= ${threshold}
|
|
20
|
+
) _sda
|
|
21
|
+
ORDER BY "${leftColumn}", "${rightColumn}";\n`;
|
|
22
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type SimpleTable from "../class/SimpleTable.js";
|
|
2
|
+
export default function getBottom(simpleTable: SimpleTable, count: number, options?: {
|
|
3
|
+
originalOrder?: boolean;
|
|
4
|
+
conditions?: string;
|
|
5
|
+
}): Promise<{
|
|
6
|
+
[key: string]: string | number | boolean | Date | null;
|
|
7
|
+
}[]>;
|
|
8
|
+
//# sourceMappingURL=getBottom.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getBottom.d.ts","sourceRoot":"","sources":["../../src/methods/getBottom.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AAEvD,wBAA8B,SAAS,CACrC,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IACP,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CAChB;;KA6BP"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.default = getBottom;
|
|
7
|
+
const mergeOptions_js_1 = __importDefault(require("../helpers/mergeOptions.js"));
|
|
8
|
+
const queryDB_js_1 = __importDefault(require("../helpers/queryDB.js"));
|
|
9
|
+
async function getBottom(simpleTable, count, options = {}) {
|
|
10
|
+
const queryResult = await (0, queryDB_js_1.default)(simpleTable, `WITH "numberedRowsForGetBottom" AS (
|
|
11
|
+
SELECT *, row_number() OVER () as "rowNumberForGetBottom" FROM "${simpleTable.name}"${options.conditions ? ` WHERE ${options.conditions}` : ""}
|
|
12
|
+
)
|
|
13
|
+
SELECT * FROM "numberedRowsForGetBottom" ORDER BY "rowNumberForGetBottom" DESC LIMIT ${count};`, (0, mergeOptions_js_1.default)(simpleTable, {
|
|
14
|
+
table: simpleTable.name,
|
|
15
|
+
returnDataFrom: "query",
|
|
16
|
+
method: "getBottom()",
|
|
17
|
+
parameters: { count, options },
|
|
18
|
+
}));
|
|
19
|
+
if (!queryResult) {
|
|
20
|
+
throw new Error("No queryResult");
|
|
21
|
+
}
|
|
22
|
+
const rowsRaw = queryResult.map((d) => {
|
|
23
|
+
delete d.rowNumberForGetBottom;
|
|
24
|
+
return d;
|
|
25
|
+
});
|
|
26
|
+
const rows = options.originalOrder ? rowsRaw.reverse() : rowsRaw;
|
|
27
|
+
return rows;
|
|
28
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getColumns.d.ts","sourceRoot":"","sources":["../../src/methods/getColumns.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AAEvD,wBAA8B,UAAU,CAAC,WAAW,EAAE,WAAW,qBAmBhE"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.default = getColumns;
|
|
7
|
+
const mergeOptions_js_1 = __importDefault(require("../helpers/mergeOptions.js"));
|
|
8
|
+
const queryDB_js_1 = __importDefault(require("../helpers/queryDB.js"));
|
|
9
|
+
async function getColumns(simpleTable) {
|
|
10
|
+
const queryResult = await (0, queryDB_js_1.default)(simpleTable, `DESCRIBE ${simpleTable.name}`, (0, mergeOptions_js_1.default)(simpleTable, {
|
|
11
|
+
table: simpleTable.name,
|
|
12
|
+
returnDataFrom: "query",
|
|
13
|
+
method: "getColumns()",
|
|
14
|
+
parameters: {},
|
|
15
|
+
}));
|
|
16
|
+
if (!queryResult) {
|
|
17
|
+
throw new Error("No result");
|
|
18
|
+
}
|
|
19
|
+
const columns = queryResult.map((d) => d.column_name);
|
|
20
|
+
return columns;
|
|
21
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type SimpleTable from "../class/SimpleTable.js";
|
|
2
|
+
export default function getDescription(simpleTable: SimpleTable): Promise<{
|
|
3
|
+
column: string;
|
|
4
|
+
type: string;
|
|
5
|
+
count: number;
|
|
6
|
+
unique: number;
|
|
7
|
+
null: number;
|
|
8
|
+
}[]>;
|
|
9
|
+
//# sourceMappingURL=getDescription.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getDescription.d.ts","sourceRoot":"","sources":["../../src/methods/getDescription.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AAEvD,wBAA8B,cAAc,CAAC,WAAW,EAAE,WAAW;YAc3C,MAAM;;WAEP,MAAM;YACC,MAAM;UACV,MAAM;KAIjC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = getDescription;
|
|
4
|
+
async function getDescription(simpleTable) {
|
|
5
|
+
const types = await simpleTable.getTypes();
|
|
6
|
+
const columns = await simpleTable.getColumns();
|
|
7
|
+
const summaryForGetDescription = await simpleTable.summarize({
|
|
8
|
+
values: columns,
|
|
9
|
+
summaries: ["count", "countUnique", "countNull"],
|
|
10
|
+
toMs: true,
|
|
11
|
+
outputTable: "summaryForGetDescription",
|
|
12
|
+
});
|
|
13
|
+
const summaryData = await summaryForGetDescription.getData();
|
|
14
|
+
await summaryForGetDescription.removeTable();
|
|
15
|
+
const description = summaryData.map((d) => ({
|
|
16
|
+
column: d["value"],
|
|
17
|
+
type: types[d["value"]],
|
|
18
|
+
count: d["count"],
|
|
19
|
+
unique: d["countUnique"],
|
|
20
|
+
null: d["countNull"],
|
|
21
|
+
}));
|
|
22
|
+
return description;
|
|
23
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type SimpleTable from "../class/SimpleTable.js";
|
|
2
|
+
export default function getFirstRow(simpleTable: SimpleTable, options?: {
|
|
3
|
+
conditions?: string;
|
|
4
|
+
}): Promise<{
|
|
5
|
+
[key: string]: string | number | boolean | Date | null;
|
|
6
|
+
}>;
|
|
7
|
+
//# sourceMappingURL=getFirstRow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFirstRow.d.ts","sourceRoot":"","sources":["../../src/methods/getFirstRow.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AAEvD,wBAA8B,WAAW,CACvC,WAAW,EAAE,WAAW,EACxB,OAAO,GAAE;IACP,UAAU,CAAC,EAAE,MAAM,CAAC;CAChB;;GAqBP"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.default = getFirstRow;
|
|
7
|
+
const mergeOptions_js_1 = __importDefault(require("../helpers/mergeOptions.js"));
|
|
8
|
+
const queryDB_js_1 = __importDefault(require("../helpers/queryDB.js"));
|
|
9
|
+
async function getFirstRow(simpleTable, options = {}) {
|
|
10
|
+
const queryResult = await (0, queryDB_js_1.default)(simpleTable, `SELECT * FROM "${simpleTable.name}"${options.conditions ? ` WHERE ${options.conditions}` : ""} LIMIT 1`, (0, mergeOptions_js_1.default)(simpleTable, {
|
|
11
|
+
table: simpleTable.name,
|
|
12
|
+
returnDataFrom: "query",
|
|
13
|
+
method: "getFirstRow()",
|
|
14
|
+
parameters: { options },
|
|
15
|
+
}));
|
|
16
|
+
if (!queryResult) {
|
|
17
|
+
throw new Error("No queryResult");
|
|
18
|
+
}
|
|
19
|
+
const result = queryResult[0];
|
|
20
|
+
return result;
|
|
21
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type SimpleTable from "../class/SimpleTable.js";
|
|
2
|
+
export default function getGeoData(SimpleTable: SimpleTable, column: string, options?: {
|
|
3
|
+
rewind?: boolean;
|
|
4
|
+
}): Promise<{
|
|
5
|
+
type: string;
|
|
6
|
+
features: {
|
|
7
|
+
type: string;
|
|
8
|
+
geometry: {
|
|
9
|
+
type: string;
|
|
10
|
+
coordinates: unknown[];
|
|
11
|
+
};
|
|
12
|
+
properties: {
|
|
13
|
+
[key: string]: string | number | boolean | Date | null;
|
|
14
|
+
};
|
|
15
|
+
}[];
|
|
16
|
+
}>;
|
|
17
|
+
//# sourceMappingURL=getGeoData.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getGeoData.d.ts","sourceRoot":"","sources":["../../src/methods/getGeoData.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AAOvD,wBAA8B,UAAU,CACtC,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO;;;;;kBA4BtB,MAAM;yBACC,OAAO,EAAE;;;;;;GAgC7B"}
|