@malloydata/render 0.0.234-dev250204162601 → 0.0.234-dev250205222325
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/module/index.mjs
CHANGED
|
@@ -3276,7 +3276,7 @@ class Dce extends O2.Dialect {
|
|
|
3276
3276
|
return `(${n} + ${r})`;
|
|
3277
3277
|
}
|
|
3278
3278
|
sqlSumDistinct(e, n, r) {
|
|
3279
|
-
const i = this.sqlSumDistinctHashedKey(e), s = 1e8, o = `(COALESCE(${n},0)*${s})`, u = `(SUM(DISTINCT ${i} + ${o}) - SUM(DISTINCT ${i}))/${s}`;
|
|
3279
|
+
const i = this.sqlSumDistinctHashedKey(e), s = 1e8, o = `(CAST (COALESCE(${n},0)*${s} as INT))`, u = `(SUM(DISTINCT ${i} + ${o}) - SUM(DISTINCT ${i}))/${s}`;
|
|
3280
3280
|
if (r === "SUM")
|
|
3281
3281
|
return u;
|
|
3282
3282
|
if (r === "AVG")
|
package/dist/module/index.umd.js
CHANGED
|
@@ -58,7 +58,7 @@ ${X$}
|
|
|
58
58
|
SELECT UNNEST(list(distinct {key:${e}, ${n.map((i,s)=>`val${s}: ${i}`).join(",")}})) a
|
|
59
59
|
)
|
|
60
60
|
)`}sqlSampleTable(e,n){if(n!==void 0){if((0,Tx.isSamplingEnable)(n)&&n.enable&&(n=this.defaultSampling),(0,Tx.isSamplingRows)(n))return`(SELECT * FROM ${e} USING SAMPLE ${n.rows})`;if((0,Tx.isSamplingPercent)(n))return`(SELECT * FROM ${e} USING SAMPLE ${n.percent} PERCENT (bernoulli))`}return e}sqlOrderBy(e){return`ORDER BY ${e.map(n=>`${n} NULLS LAST`).join(",")}`}sqlLiteralString(e){return"'"+e.replace(/'/g,"''")+"'"}sqlLiteralRegexp(e){return"'"+e.replace(/'/g,"''")+"'"}getDialectFunctionOverrides(){return(0,K$.expandOverrideMap)(_ce.DUCKDB_MALLOY_STANDARD_OVERLOADS)}getDialectFunctions(){return(0,K$.expandBlueprintMap)(Ace.DUCKDB_DIALECT_FUNCTIONS)}malloyTypeToSQLType(e){return e.type==="number"?e.numberType==="integer"?"integer":"double precision":e.type==="string"?"varchar":e.type}parseDuckDBType(e){const n=new Cce(e);try{return n.typeDef()}catch(r){if(r instanceof J$.TinyParseError)return{type:"sql native",rawType:e};throw r}}sqlTypeToMalloyType(e){var n,r,i;const s=e.replace(/^DECIMAL\(\d+,\d+\)/g,"DECIMAL"),o=(r=(n=s.match(/^(\w+)/))===null||n===void 0?void 0:n.at(0))!==null&&r!==void 0?r:s;return(i=DT[o.toUpperCase()])!==null&&i!==void 0?i:{type:"sql native",rawType:e.toLowerCase()}}castToString(e){return`CAST(${e} as VARCHAR)`}concat(...e){return e.join(" || ")}validateTypeName(e){return e.match(/^[A-Za-z\s(),[\]0-9]*$/)!==null}sqlAlterTimeExpr(e){let n=e.units,r=e.kids.delta.sql;n==="quarter"?(n="month",r=`${r}*3`):n==="week"&&(n="day",r=`${r}*7`);const i=`INTERVAL (${r}) ${n}`;return`${e.kids.base.sql} ${e.op} ${i}`}sqlRegexpMatch(e){return`REGEXP_MATCHES(${e.kids.expr.sql},${e.kids.regex.sql})`}sqlMeasureTimeExpr(e){const n=e.kids.left,r=e.kids.right;let i=n.sql||"",s=r.sql||"";return(0,yce.inDays)(e.units)||(Tx.TD.isDate(n.typeDef)&&(i=`${i}::TIMESTAMP`),Tx.TD.isDate(r.typeDef)&&(s=`${s}::TIMESTAMP`)),`DATE_SUB('${e.units}', ${i}, ${s})`}sqlLiteralRecord(e){return"{"+Object.entries(e.kids).map(([r,i])=>`${this.sqlMaybeQuoteIdentifier(r)}:${i.sql}`).join(",")+"}"}}Ay.DuckDBDialect=vce;class Cce extends J$.TinyParser{constructor(e){super(e,{space:/^\s+/,qsingle:/^'([^']|'')*'/,qdouble:/^"([^"]|"")*"/,size:/^\(\d+\)/,precision:/^\(\d+,\d+\)/,arrayOf:/^\[]/,char:/^[,:[\]()-]/,id:/^\w+/})}unquoteName(e){return e.type==="qsingle"?e.text.replace("''",""):e.type==="qdouble"?e.text.replace('""',""):e.text}sqlID(e){return e.text.toUpperCase()}typeDef(){const e=this.next("id"),n=this.sqlID(e);let r;if(n==="VARCHAR"&&this.peek().type==="size"&&this.next(),(n==="DECIMAL"||n==="NUMERIC")&&this.peek().type==="precision")this.next(),r={type:"number",numberType:"float"};else if(n==="TIMESTAMP")this.peek().text==="WITH"&&this.nextText("WITH","TIME","ZONE"),r={type:"timestamp"};else if(DT[n])r=DT[n];else if(n==="STRUCT")for(this.next("("),r={type:"record",fields:[]};;){const i=this.next();if(i.type==="qsingle"||i.type==="qdouble"||i.type==="id"){const s=this.typeDef();r.fields.push((0,Tx.mkFieldDef)(s,this.unquoteName(i)))}else{if(i.type!==")")throw this.parseError("Expected identifier or ) to end STRUCT");break}this.peek().type===","&&this.next()}else if(e.type==="id"){let i=e.cursor+e.text.length;this.peek().type==="precision"&&this.next(),this.peek().type==="eof"&&(i=this.input.length),r={type:"sql native",rawType:this.input.slice(e.cursor,i)}}else throw this.parseError("Could not understand type");for(;this.peek().type==="arrayOf";)this.next(),r.type==="record"?r={type:"array",elementTypeDef:{type:"record_element"},fields:r.fields}:r={type:"array",elementTypeDef:r};return r}}(function(t){var e=T&&T.__createBinding||(Object.create?function(r,i,s,o){o===void 0&&(o=s);var u=Object.getOwnPropertyDescriptor(i,s);(!u||("get"in u?!i.__esModule:u.writable||u.configurable))&&(u={enumerable:!0,get:function(){return i[s]}}),Object.defineProperty(r,o,u)}:function(r,i,s,o){o===void 0&&(o=s),r[o]=i[s]}),n=T&&T.__exportStar||function(r,i){for(var s in r)s!=="default"&&!Object.prototype.hasOwnProperty.call(i,s)&&e(i,r,s)};Object.defineProperty(t,"__esModule",{value:!0}),n(Ay,t)})(RT);var NT={},Cy={},Sy={};Object.defineProperty(Sy,"__esModule",{value:!0}),Sy.SNOWFLAKE_DIALECT_FUNCTIONS=void 0;const Cs=et,Sce={generic:"T"},by={node:"aggregate_order_by",prefix:" WITHIN GROUP(",suffix:")"},wT={default_separator:{takes:{value:{dimension:"string"}},returns:{measure:"string"},supportsOrderBy:!0,impl:{expr:(0,Cs.sql)`LISTAGG(${(0,Cs.arg)("value")}, ',')${by}`}},with_separator:{takes:{value:{dimension:"string"},separator:{literal:"string"}},returns:{measure:"string"},supportsOrderBy:!0,impl:{expr:(0,Cs.sql)`LISTAGG(${(0,Cs.arg)("value")}, ${(0,Cs.arg)("separator")})${by}`}}},bce={default_separator:{...wT.default_separator,isSymmetric:!0,impl:{expr:(0,Cs.sql)`LISTAGG(DISTINCT ${(0,Cs.arg)("value")}, ',')${by}`}},with_separator:{...wT.with_separator,isSymmetric:!0,impl:{expr:(0,Cs.sql)`LISTAGG(DISTINCT ${(0,Cs.arg)("value")}, ${(0,Cs.arg)("separator")})${by}`}}};Sy.SNOWFLAKE_DIALECT_FUNCTIONS={string_agg:wT,string_agg_distinct:bce,hll_accumulate:{default:{takes:{value:{dimension:Sce}},returns:{measure:{sql_native:"hyperloglog"}},generic:{T:["string","number"]},isSymmetric:!0,impl:{function:"hll_accumulate"}}},hll_combine:{takes:{value:{sql_native:"hyperloglog"}},returns:{measure:{sql_native:"hyperloglog"}},impl:{function:"hll_combine"},isSymmetric:!0},hll_estimate:{takes:{value:{sql_native:"hyperloglog"}},returns:{dimension:"number"},impl:{function:"hll_estimate"}},hll_export:{takes:{value:{sql_native:"hyperloglog"}},returns:{dimension:{sql_native:"bytes"}},impl:{function:"hll_export"}},hll_import:{takes:{value:{sql_native:"bytes"}},returns:{dimension:{sql_native:"hyperloglog"}},impl:{function:"hll_import"}},...(0,Cs.def)("repeat",{str:"string",n:"number"},"string"),...(0,Cs.def)("reverse",{str:"string"},"string")};var Ty={};Object.defineProperty(Ty,"__esModule",{value:!0}),Ty.SNOWFLAKE_MALLOY_STANDARD_OVERLOADS=void 0,Ty.SNOWFLAKE_MALLOY_STANDARD_OVERLOADS={chr:{sql:"COALESCE(CHR(${value}), '')"},div:{sql:"CASE WHEN DIV0(${dividend}, ${divisor}) < 0 THEN CEIL(DIV0(${dividend}, ${divisor})) ELSE FLOOR(DIV0(${dividend}, ${divisor})) END"},is_inf:{sql:"COALESCE(${value} = 'inf'::FLOAT OR ${value} = '-inf'::FLOAT, false)"},is_nan:{sql:"COALESCE(${value} = 'NAN'::FLOAT, false)"},length:{function:"LENGTH"},byte_length:{sql:"CEIL(BIT_LENGTH(${value}) / 8)"},log:{sql:"LOG(${base}, ${value})"},rand:{sql:"UNIFORM(0::FLOAT, 1::FLOAT, RANDOM())"},regexp_extract:{sql:"REGEXP_SUBSTR(${value}, ${pattern}, 1, 1, 'e')"},starts_with:{sql:"COALESCE(STARTSWITH(${value}, ${prefix}), false)"},ends_with:{sql:"COALESCE(ENDSWITH(${value}, ${suffix}), false)"},strpos:{sql:"POSITION(${search_string}, ${test_string})"},trunc:{to_integer:{sql:"CASE WHEN ${value} < 0 THEN CEIL(${value}) ELSE FLOOR(${value}) END"},to_precision:{sql:"CASE WHEN ${value} < 0 THEN CEIL(${value} * POW(10, ${precision})) / POW(10, ${precision}) ELSE FLOOR(${value} * POW(10, ${precision})) / POW(10, ${precision}) END"}}},Object.defineProperty(Cy,"__esModule",{value:!0}),Cy.SnowflakeDialect=void 0;const Tce=Dt,zi=We,Z$=El,N2=gl,Rce=Sy,Oce=Ty,Dce={day_of_week:"dayofweek",day_of_year:"dayofyear"},Nce={varchar:{type:"string"},text:{type:"string"},string:{type:"string"},char:{type:"string"},character:{type:"string"},nvarchar:{type:"string"},nvarchar2:{type:"string"},"char varying":{type:"string"},"nchar varying":{type:"string"},number:{type:"number",numberType:"integer"},numeric:{type:"number",numberType:"integer"},decimal:{type:"number",numberType:"integer"},dec:{type:"number",numberType:"integer"},integer:{type:"number",numberType:"integer"},int:{type:"number",numberType:"integer"},bigint:{type:"number",numberType:"integer"},smallint:{type:"number",numberType:"integer"},tinyint:{type:"number",numberType:"integer"},byteint:{type:"number",numberType:"integer"},float:{type:"number",numberType:"float"},float4:{type:"number",numberType:"float"},float8:{type:"number",numberType:"float"},double:{type:"number",numberType:"float"},"double precision":{type:"number",numberType:"float"},real:{type:"number",numberType:"float"},boolean:{type:"boolean"},date:{type:"date"},timestamp:{type:"timestamp"},timestampntz:{type:"timestamp"},timestamp_ntz:{type:"timestamp"},"timestamp without time zone":{type:"timestamp"},timestamptz:{type:"timestamp"},timestamp_tz:{type:"timestamp"},"timestamp with time zone":{type:"timestamp"}};class wce extends N2.Dialect{constructor(){super(...arguments),this.name="snowflake",this.experimental=!1,this.defaultNumberType="NUMBER",this.defaultDecimalType="NUMBER",this.udfPrefix="__udf",this.hasFinalStage=!1,this.divisionIsInteger=!1,this.supportsSumDistinctFunction=!0,this.supportsSafeCast=!0,this.supportsNesting=!0,this.defaultSampling={rows:5e4},this.supportsHyperLogLog=!0,this.unnestWithNumbers=!1,this.supportUnnestArrayAgg=!1,this.supportsAggDistinct=!1,this.supportsCTEinCoorelatedSubQueries=!1,this.dontUnionIndex=!1,this.supportsQualify=!1,this.supportsPipelinesInViews=!1,this.supportsComplexFilteredSources=!1}quoteTablePath(e){return e}sqlGroupSetTable(e){return`CROSS JOIN (SELECT index as group_set FROM TABLE(FLATTEN(ARRAY_GENERATE_RANGE(0, ${e+1}))))`}sqlAnyValue(e,n){return`(ARRAY_AGG(CASE WHEN group_set=${e} THEN ${n} END) WITHIN GROUP (ORDER BY ${n} ASC NULLS LAST))[0]`}mapFields(e){return e.map(n=>`
|
|
61
|
-
${n.sqlExpression} as ${n.sqlOutputName}`).join(", ")}mapFieldsForObjectConstruct(e){return e.map(n=>`'${n.rawName}', (${n.sqlExpression})`).join(", ")}sqlAggregateTurtle(e,n,r,i){const s=this.mapFieldsForObjectConstruct(n),o=r?` WITHIN GROUP (${r})`:"",u=`ARRAY_AGG(CASE WHEN group_set=${e} THEN OBJECT_CONSTRUCT_KEEP_NULL(${s}) END)${o}`;return i===void 0?`COALESCE(${u}, [])`:`COALESCE(ARRAY_SLICE(${u}, 0, ${i}), [])`}sqlAnyValueTurtle(e,n){const r=this.mapFieldsForObjectConstruct(n);return`(ARRAY_AGG(CASE WHEN group_set=${e} THEN OBJECT_CONSTRUCT_KEEP_NULL(${r}) END) WITHIN GROUP (ORDER BY 1 ASC NULLS LAST))[0]`}sqlAnyValueLastTurtle(e,n,r){return`(ARRAY_AGG(CASE WHEN group_set=${n} THEN ${e} END) WITHIN GROUP (ORDER BY ${e} ASC NULLS LAST))[0] AS ${r}`}sqlCoaleseMeasuresInline(e,n){const r=this.mapFieldsForObjectConstruct(n),i=n.map(s=>`'${s.sqlOutputName}', NULL`).join(", ");return`COALESCE(ARRAY_AGG(CASE WHEN group_set=${e} THEN OBJECT_CONSTRUCT_KEEP_NULL(${r}) END)[0], OBJECT_CONSTRUCT_KEEP_NULL(${i}))`}sqlUnnestAlias(e,n,r,i,s,o){const u=this.sqlMaybeQuoteIdentifier(n);return s?`LEFT JOIN lateral flatten(input => ${e}) as ${u}`:`LEFT JOIN LATERAL FLATTEN(INPUT => ifnull(${e},[1])) AS ${u}`}sqlSumDistinctHashedKey(e){e=`${e}::STRING`;const n=`to_number(substr(md5_hex(${e}), 1, 15), repeat('X', 15)) * 4294967296`,r=`to_number(substr(md5_hex(${e}), 16, 8), repeat('X', 8))`;return`(${n} + ${r})`}sqlSumDistinct(e,n,r){const i=this.sqlSumDistinctHashedKey(e),s=1e8,o=`(COALESCE(${n},0)*${s})`,u=`(SUM(DISTINCT ${i} + ${o}) - SUM(DISTINCT ${i}))/${s}`;if(r==="SUM")return u;if(r==="AVG")return`(${u})/NULLIF(COUNT(DISTINCT CASE WHEN ${n} IS NOT NULL THEN ${e} END),0)`;throw new Error(`Unknown Symmetric Aggregate function ${r}`)}sqlGenerateUUID(){return"UUID_STRING()"}sqlFieldReference(e,n,r,i){const s=this.sqlMaybeQuoteIdentifier(r);if(r==="__row_id")return`"${e}".INDEX::varchar`;if(n.startsWith("array")){let o=`"${e}".value`;switch(n==="array[record]"&&(o+=`:${s}`),i){case"record":case"array":i="VARIANT";break;case"string":i="VARCHAR";break;case"number":i="DOUBLE";break;case"struct":throw new Error("NOT STRUCT PLEASE")}return`${o}::${i}`}else if(n==="record")return`${e}:${s}`;return`${e}.${s}`}sqlUnnestPipelineHead(e,n){let r=n;return e&&(r=`[${r}]`),`TABLE(FLATTEN(input =>${r}))`}sqlCreateFunction(e,n){throw new Error("not implemented yet")}sqlCreateFunctionCombineLastStage(e){throw new Error("not implemented yet")}sqlSelectAliasAsStruct(e){return`OBJECT_CONSTRUCT_KEEP_NULL(${e}.*)`}sqlMaybeQuoteIdentifier(e){return'"'+e.replace(/"/g,'""')+'"'}sqlCreateTableAsSelect(e,n){return`
|
|
61
|
+
${n.sqlExpression} as ${n.sqlOutputName}`).join(", ")}mapFieldsForObjectConstruct(e){return e.map(n=>`'${n.rawName}', (${n.sqlExpression})`).join(", ")}sqlAggregateTurtle(e,n,r,i){const s=this.mapFieldsForObjectConstruct(n),o=r?` WITHIN GROUP (${r})`:"",u=`ARRAY_AGG(CASE WHEN group_set=${e} THEN OBJECT_CONSTRUCT_KEEP_NULL(${s}) END)${o}`;return i===void 0?`COALESCE(${u}, [])`:`COALESCE(ARRAY_SLICE(${u}, 0, ${i}), [])`}sqlAnyValueTurtle(e,n){const r=this.mapFieldsForObjectConstruct(n);return`(ARRAY_AGG(CASE WHEN group_set=${e} THEN OBJECT_CONSTRUCT_KEEP_NULL(${r}) END) WITHIN GROUP (ORDER BY 1 ASC NULLS LAST))[0]`}sqlAnyValueLastTurtle(e,n,r){return`(ARRAY_AGG(CASE WHEN group_set=${n} THEN ${e} END) WITHIN GROUP (ORDER BY ${e} ASC NULLS LAST))[0] AS ${r}`}sqlCoaleseMeasuresInline(e,n){const r=this.mapFieldsForObjectConstruct(n),i=n.map(s=>`'${s.sqlOutputName}', NULL`).join(", ");return`COALESCE(ARRAY_AGG(CASE WHEN group_set=${e} THEN OBJECT_CONSTRUCT_KEEP_NULL(${r}) END)[0], OBJECT_CONSTRUCT_KEEP_NULL(${i}))`}sqlUnnestAlias(e,n,r,i,s,o){const u=this.sqlMaybeQuoteIdentifier(n);return s?`LEFT JOIN lateral flatten(input => ${e}) as ${u}`:`LEFT JOIN LATERAL FLATTEN(INPUT => ifnull(${e},[1])) AS ${u}`}sqlSumDistinctHashedKey(e){e=`${e}::STRING`;const n=`to_number(substr(md5_hex(${e}), 1, 15), repeat('X', 15)) * 4294967296`,r=`to_number(substr(md5_hex(${e}), 16, 8), repeat('X', 8))`;return`(${n} + ${r})`}sqlSumDistinct(e,n,r){const i=this.sqlSumDistinctHashedKey(e),s=1e8,o=`(CAST (COALESCE(${n},0)*${s} as INT))`,u=`(SUM(DISTINCT ${i} + ${o}) - SUM(DISTINCT ${i}))/${s}`;if(r==="SUM")return u;if(r==="AVG")return`(${u})/NULLIF(COUNT(DISTINCT CASE WHEN ${n} IS NOT NULL THEN ${e} END),0)`;throw new Error(`Unknown Symmetric Aggregate function ${r}`)}sqlGenerateUUID(){return"UUID_STRING()"}sqlFieldReference(e,n,r,i){const s=this.sqlMaybeQuoteIdentifier(r);if(r==="__row_id")return`"${e}".INDEX::varchar`;if(n.startsWith("array")){let o=`"${e}".value`;switch(n==="array[record]"&&(o+=`:${s}`),i){case"record":case"array":i="VARIANT";break;case"string":i="VARCHAR";break;case"number":i="DOUBLE";break;case"struct":throw new Error("NOT STRUCT PLEASE")}return`${o}::${i}`}else if(n==="record")return`${e}:${s}`;return`${e}.${s}`}sqlUnnestPipelineHead(e,n){let r=n;return e&&(r=`[${r}]`),`TABLE(FLATTEN(input =>${r}))`}sqlCreateFunction(e,n){throw new Error("not implemented yet")}sqlCreateFunctionCombineLastStage(e){throw new Error("not implemented yet")}sqlSelectAliasAsStruct(e){return`OBJECT_CONSTRUCT_KEEP_NULL(${e}.*)`}sqlMaybeQuoteIdentifier(e){return'"'+e.replace(/"/g,'""')+'"'}sqlCreateTableAsSelect(e,n){return`
|
|
62
62
|
CREATE TEMP TABLE IF NOT EXISTS \`${e}\`
|
|
63
63
|
AS (
|
|
64
64
|
${(0,Tce.indent)(n)}
|
|
@@ -4193,7 +4193,7 @@ class bxe extends fp.Dialect {
|
|
|
4193
4193
|
return `(${n} + ${r})`;
|
|
4194
4194
|
}
|
|
4195
4195
|
sqlSumDistinct(e, n, r) {
|
|
4196
|
-
const i = this.sqlSumDistinctHashedKey(e), s = 1e8, o = `(COALESCE(${n},0)*${s})`, u = `(SUM(DISTINCT ${i} + ${o}) - SUM(DISTINCT ${i}))/${s}`;
|
|
4196
|
+
const i = this.sqlSumDistinctHashedKey(e), s = 1e8, o = `(CAST (COALESCE(${n},0)*${s} as INT))`, u = `(SUM(DISTINCT ${i} + ${o}) - SUM(DISTINCT ${i}))/${s}`;
|
|
4197
4197
|
if (r === "SUM")
|
|
4198
4198
|
return u;
|
|
4199
4199
|
if (r === "AVG")
|
|
@@ -58,7 +58,7 @@ ${Wk}
|
|
|
58
58
|
SELECT UNNEST(list(distinct {key:${e}, ${n.map((i,s)=>`val${s}: ${i}`).join(",")}})) a
|
|
59
59
|
)
|
|
60
60
|
)`}sqlSampleTable(e,n){if(n!==void 0){if((0,rd.isSamplingEnable)(n)&&n.enable&&(n=this.defaultSampling),(0,rd.isSamplingRows)(n))return`(SELECT * FROM ${e} USING SAMPLE ${n.rows})`;if((0,rd.isSamplingPercent)(n))return`(SELECT * FROM ${e} USING SAMPLE ${n.percent} PERCENT (bernoulli))`}return e}sqlOrderBy(e){return`ORDER BY ${e.map(n=>`${n} NULLS LAST`).join(",")}`}sqlLiteralString(e){return"'"+e.replace(/'/g,"''")+"'"}sqlLiteralRegexp(e){return"'"+e.replace(/'/g,"''")+"'"}getDialectFunctionOverrides(){return(0,Qk.expandOverrideMap)(hxe.DUCKDB_MALLOY_STANDARD_OVERLOADS)}getDialectFunctions(){return(0,Qk.expandBlueprintMap)(dxe.DUCKDB_DIALECT_FUNCTIONS)}malloyTypeToSQLType(e){return e.type==="number"?e.numberType==="integer"?"integer":"double precision":e.type==="string"?"varchar":e.type}parseDuckDBType(e){const n=new gxe(e);try{return n.typeDef()}catch(r){if(r instanceof Gk.TinyParseError)return{type:"sql native",rawType:e};throw r}}sqlTypeToMalloyType(e){var n,r,i;const s=e.replace(/^DECIMAL\(\d+,\d+\)/g,"DECIMAL"),o=(r=(n=s.match(/^(\w+)/))===null||n===void 0?void 0:n.at(0))!==null&&r!==void 0?r:s;return(i=S6[o.toUpperCase()])!==null&&i!==void 0?i:{type:"sql native",rawType:e.toLowerCase()}}castToString(e){return`CAST(${e} as VARCHAR)`}concat(...e){return e.join(" || ")}validateTypeName(e){return e.match(/^[A-Za-z\s(),[\]0-9]*$/)!==null}sqlAlterTimeExpr(e){let n=e.units,r=e.kids.delta.sql;n==="quarter"?(n="month",r=`${r}*3`):n==="week"&&(n="day",r=`${r}*7`);const i=`INTERVAL (${r}) ${n}`;return`${e.kids.base.sql} ${e.op} ${i}`}sqlRegexpMatch(e){return`REGEXP_MATCHES(${e.kids.expr.sql},${e.kids.regex.sql})`}sqlMeasureTimeExpr(e){const n=e.kids.left,r=e.kids.right;let i=n.sql||"",s=r.sql||"";return(0,fxe.inDays)(e.units)||(rd.TD.isDate(n.typeDef)&&(i=`${i}::TIMESTAMP`),rd.TD.isDate(r.typeDef)&&(s=`${s}::TIMESTAMP`)),`DATE_SUB('${e.units}', ${i}, ${s})`}sqlLiteralRecord(e){return"{"+Object.entries(e.kids).map(([r,i])=>`${this.sqlMaybeQuoteIdentifier(r)}:${i.sql}`).join(",")+"}"}}mE.DuckDBDialect=pxe;class gxe extends Gk.TinyParser{constructor(e){super(e,{space:/^\s+/,qsingle:/^'([^']|'')*'/,qdouble:/^"([^"]|"")*"/,size:/^\(\d+\)/,precision:/^\(\d+,\d+\)/,arrayOf:/^\[]/,char:/^[,:[\]()-]/,id:/^\w+/})}unquoteName(e){return e.type==="qsingle"?e.text.replace("''",""):e.type==="qdouble"?e.text.replace('""',""):e.text}sqlID(e){return e.text.toUpperCase()}typeDef(){const e=this.next("id"),n=this.sqlID(e);let r;if(n==="VARCHAR"&&this.peek().type==="size"&&this.next(),(n==="DECIMAL"||n==="NUMERIC")&&this.peek().type==="precision")this.next(),r={type:"number",numberType:"float"};else if(n==="TIMESTAMP")this.peek().text==="WITH"&&this.nextText("WITH","TIME","ZONE"),r={type:"timestamp"};else if(S6[n])r=S6[n];else if(n==="STRUCT")for(this.next("("),r={type:"record",fields:[]};;){const i=this.next();if(i.type==="qsingle"||i.type==="qdouble"||i.type==="id"){const s=this.typeDef();r.fields.push((0,rd.mkFieldDef)(s,this.unquoteName(i)))}else{if(i.type!==")")throw this.parseError("Expected identifier or ) to end STRUCT");break}this.peek().type===","&&this.next()}else if(e.type==="id"){let i=e.cursor+e.text.length;this.peek().type==="precision"&&this.next(),this.peek().type==="eof"&&(i=this.input.length),r={type:"sql native",rawType:this.input.slice(e.cursor,i)}}else throw this.parseError("Could not understand type");for(;this.peek().type==="arrayOf";)this.next(),r.type==="record"?r={type:"array",elementTypeDef:{type:"record_element"},fields:r.fields}:r={type:"array",elementTypeDef:r};return r}}(function(t){var e=T&&T.__createBinding||(Object.create?function(r,i,s,o){o===void 0&&(o=s);var u=Object.getOwnPropertyDescriptor(i,s);(!u||("get"in u?!i.__esModule:u.writable||u.configurable))&&(u={enumerable:!0,get:function(){return i[s]}}),Object.defineProperty(r,o,u)}:function(r,i,s,o){o===void 0&&(o=s),r[o]=i[s]}),n=T&&T.__exportStar||function(r,i){for(var s in r)s!=="default"&&!Object.prototype.hasOwnProperty.call(i,s)&&e(i,r,s)};Object.defineProperty(t,"__esModule",{value:!0}),n(mE,t)})(v6);var C6={},AE={},vE={};Object.defineProperty(vE,"__esModule",{value:!0}),vE.SNOWFLAKE_DIALECT_FUNCTIONS=void 0;const Ls=it,mxe={generic:"T"},_E={node:"aggregate_order_by",prefix:" WITHIN GROUP(",suffix:")"},b6={default_separator:{takes:{value:{dimension:"string"}},returns:{measure:"string"},supportsOrderBy:!0,impl:{expr:(0,Ls.sql)`LISTAGG(${(0,Ls.arg)("value")}, ',')${_E}`}},with_separator:{takes:{value:{dimension:"string"},separator:{literal:"string"}},returns:{measure:"string"},supportsOrderBy:!0,impl:{expr:(0,Ls.sql)`LISTAGG(${(0,Ls.arg)("value")}, ${(0,Ls.arg)("separator")})${_E}`}}},yxe={default_separator:{...b6.default_separator,isSymmetric:!0,impl:{expr:(0,Ls.sql)`LISTAGG(DISTINCT ${(0,Ls.arg)("value")}, ',')${_E}`}},with_separator:{...b6.with_separator,isSymmetric:!0,impl:{expr:(0,Ls.sql)`LISTAGG(DISTINCT ${(0,Ls.arg)("value")}, ${(0,Ls.arg)("separator")})${_E}`}}};vE.SNOWFLAKE_DIALECT_FUNCTIONS={string_agg:b6,string_agg_distinct:yxe,hll_accumulate:{default:{takes:{value:{dimension:mxe}},returns:{measure:{sql_native:"hyperloglog"}},generic:{T:["string","number"]},isSymmetric:!0,impl:{function:"hll_accumulate"}}},hll_combine:{takes:{value:{sql_native:"hyperloglog"}},returns:{measure:{sql_native:"hyperloglog"}},impl:{function:"hll_combine"},isSymmetric:!0},hll_estimate:{takes:{value:{sql_native:"hyperloglog"}},returns:{dimension:"number"},impl:{function:"hll_estimate"}},hll_export:{takes:{value:{sql_native:"hyperloglog"}},returns:{dimension:{sql_native:"bytes"}},impl:{function:"hll_export"}},hll_import:{takes:{value:{sql_native:"bytes"}},returns:{dimension:{sql_native:"hyperloglog"}},impl:{function:"hll_import"}},...(0,Ls.def)("repeat",{str:"string",n:"number"},"string"),...(0,Ls.def)("reverse",{str:"string"},"string")};var SE={};Object.defineProperty(SE,"__esModule",{value:!0}),SE.SNOWFLAKE_MALLOY_STANDARD_OVERLOADS=void 0,SE.SNOWFLAKE_MALLOY_STANDARD_OVERLOADS={chr:{sql:"COALESCE(CHR(${value}), '')"},div:{sql:"CASE WHEN DIV0(${dividend}, ${divisor}) < 0 THEN CEIL(DIV0(${dividend}, ${divisor})) ELSE FLOOR(DIV0(${dividend}, ${divisor})) END"},is_inf:{sql:"COALESCE(${value} = 'inf'::FLOAT OR ${value} = '-inf'::FLOAT, false)"},is_nan:{sql:"COALESCE(${value} = 'NAN'::FLOAT, false)"},length:{function:"LENGTH"},byte_length:{sql:"CEIL(BIT_LENGTH(${value}) / 8)"},log:{sql:"LOG(${base}, ${value})"},rand:{sql:"UNIFORM(0::FLOAT, 1::FLOAT, RANDOM())"},regexp_extract:{sql:"REGEXP_SUBSTR(${value}, ${pattern}, 1, 1, 'e')"},starts_with:{sql:"COALESCE(STARTSWITH(${value}, ${prefix}), false)"},ends_with:{sql:"COALESCE(ENDSWITH(${value}, ${suffix}), false)"},strpos:{sql:"POSITION(${search_string}, ${test_string})"},trunc:{to_integer:{sql:"CASE WHEN ${value} < 0 THEN CEIL(${value}) ELSE FLOOR(${value}) END"},to_precision:{sql:"CASE WHEN ${value} < 0 THEN CEIL(${value} * POW(10, ${precision})) / POW(10, ${precision}) ELSE FLOOR(${value} * POW(10, ${precision})) / POW(10, ${precision}) END"}}},Object.defineProperty(AE,"__esModule",{value:!0}),AE.SnowflakeDialect=void 0;const Exe=Ft,es=Ke,Vk=Ul,gp=Ml,Axe=vE,vxe=SE,_xe={day_of_week:"dayofweek",day_of_year:"dayofyear"},Sxe={varchar:{type:"string"},text:{type:"string"},string:{type:"string"},char:{type:"string"},character:{type:"string"},nvarchar:{type:"string"},nvarchar2:{type:"string"},"char varying":{type:"string"},"nchar varying":{type:"string"},number:{type:"number",numberType:"integer"},numeric:{type:"number",numberType:"integer"},decimal:{type:"number",numberType:"integer"},dec:{type:"number",numberType:"integer"},integer:{type:"number",numberType:"integer"},int:{type:"number",numberType:"integer"},bigint:{type:"number",numberType:"integer"},smallint:{type:"number",numberType:"integer"},tinyint:{type:"number",numberType:"integer"},byteint:{type:"number",numberType:"integer"},float:{type:"number",numberType:"float"},float4:{type:"number",numberType:"float"},float8:{type:"number",numberType:"float"},double:{type:"number",numberType:"float"},"double precision":{type:"number",numberType:"float"},real:{type:"number",numberType:"float"},boolean:{type:"boolean"},date:{type:"date"},timestamp:{type:"timestamp"},timestampntz:{type:"timestamp"},timestamp_ntz:{type:"timestamp"},"timestamp without time zone":{type:"timestamp"},timestamptz:{type:"timestamp"},timestamp_tz:{type:"timestamp"},"timestamp with time zone":{type:"timestamp"}};class Cxe extends gp.Dialect{constructor(){super(...arguments),this.name="snowflake",this.experimental=!1,this.defaultNumberType="NUMBER",this.defaultDecimalType="NUMBER",this.udfPrefix="__udf",this.hasFinalStage=!1,this.divisionIsInteger=!1,this.supportsSumDistinctFunction=!0,this.supportsSafeCast=!0,this.supportsNesting=!0,this.defaultSampling={rows:5e4},this.supportsHyperLogLog=!0,this.unnestWithNumbers=!1,this.supportUnnestArrayAgg=!1,this.supportsAggDistinct=!1,this.supportsCTEinCoorelatedSubQueries=!1,this.dontUnionIndex=!1,this.supportsQualify=!1,this.supportsPipelinesInViews=!1,this.supportsComplexFilteredSources=!1}quoteTablePath(e){return e}sqlGroupSetTable(e){return`CROSS JOIN (SELECT index as group_set FROM TABLE(FLATTEN(ARRAY_GENERATE_RANGE(0, ${e+1}))))`}sqlAnyValue(e,n){return`(ARRAY_AGG(CASE WHEN group_set=${e} THEN ${n} END) WITHIN GROUP (ORDER BY ${n} ASC NULLS LAST))[0]`}mapFields(e){return e.map(n=>`
|
|
61
|
-
${n.sqlExpression} as ${n.sqlOutputName}`).join(", ")}mapFieldsForObjectConstruct(e){return e.map(n=>`'${n.rawName}', (${n.sqlExpression})`).join(", ")}sqlAggregateTurtle(e,n,r,i){const s=this.mapFieldsForObjectConstruct(n),o=r?` WITHIN GROUP (${r})`:"",u=`ARRAY_AGG(CASE WHEN group_set=${e} THEN OBJECT_CONSTRUCT_KEEP_NULL(${s}) END)${o}`;return i===void 0?`COALESCE(${u}, [])`:`COALESCE(ARRAY_SLICE(${u}, 0, ${i}), [])`}sqlAnyValueTurtle(e,n){const r=this.mapFieldsForObjectConstruct(n);return`(ARRAY_AGG(CASE WHEN group_set=${e} THEN OBJECT_CONSTRUCT_KEEP_NULL(${r}) END) WITHIN GROUP (ORDER BY 1 ASC NULLS LAST))[0]`}sqlAnyValueLastTurtle(e,n,r){return`(ARRAY_AGG(CASE WHEN group_set=${n} THEN ${e} END) WITHIN GROUP (ORDER BY ${e} ASC NULLS LAST))[0] AS ${r}`}sqlCoaleseMeasuresInline(e,n){const r=this.mapFieldsForObjectConstruct(n),i=n.map(s=>`'${s.sqlOutputName}', NULL`).join(", ");return`COALESCE(ARRAY_AGG(CASE WHEN group_set=${e} THEN OBJECT_CONSTRUCT_KEEP_NULL(${r}) END)[0], OBJECT_CONSTRUCT_KEEP_NULL(${i}))`}sqlUnnestAlias(e,n,r,i,s,o){const u=this.sqlMaybeQuoteIdentifier(n);return s?`LEFT JOIN lateral flatten(input => ${e}) as ${u}`:`LEFT JOIN LATERAL FLATTEN(INPUT => ifnull(${e},[1])) AS ${u}`}sqlSumDistinctHashedKey(e){e=`${e}::STRING`;const n=`to_number(substr(md5_hex(${e}), 1, 15), repeat('X', 15)) * 4294967296`,r=`to_number(substr(md5_hex(${e}), 16, 8), repeat('X', 8))`;return`(${n} + ${r})`}sqlSumDistinct(e,n,r){const i=this.sqlSumDistinctHashedKey(e),s=1e8,o=`(COALESCE(${n},0)*${s})`,u=`(SUM(DISTINCT ${i} + ${o}) - SUM(DISTINCT ${i}))/${s}`;if(r==="SUM")return u;if(r==="AVG")return`(${u})/NULLIF(COUNT(DISTINCT CASE WHEN ${n} IS NOT NULL THEN ${e} END),0)`;throw new Error(`Unknown Symmetric Aggregate function ${r}`)}sqlGenerateUUID(){return"UUID_STRING()"}sqlFieldReference(e,n,r,i){const s=this.sqlMaybeQuoteIdentifier(r);if(r==="__row_id")return`"${e}".INDEX::varchar`;if(n.startsWith("array")){let o=`"${e}".value`;switch(n==="array[record]"&&(o+=`:${s}`),i){case"record":case"array":i="VARIANT";break;case"string":i="VARCHAR";break;case"number":i="DOUBLE";break;case"struct":throw new Error("NOT STRUCT PLEASE")}return`${o}::${i}`}else if(n==="record")return`${e}:${s}`;return`${e}.${s}`}sqlUnnestPipelineHead(e,n){let r=n;return e&&(r=`[${r}]`),`TABLE(FLATTEN(input =>${r}))`}sqlCreateFunction(e,n){throw new Error("not implemented yet")}sqlCreateFunctionCombineLastStage(e){throw new Error("not implemented yet")}sqlSelectAliasAsStruct(e){return`OBJECT_CONSTRUCT_KEEP_NULL(${e}.*)`}sqlMaybeQuoteIdentifier(e){return'"'+e.replace(/"/g,'""')+'"'}sqlCreateTableAsSelect(e,n){return`
|
|
61
|
+
${n.sqlExpression} as ${n.sqlOutputName}`).join(", ")}mapFieldsForObjectConstruct(e){return e.map(n=>`'${n.rawName}', (${n.sqlExpression})`).join(", ")}sqlAggregateTurtle(e,n,r,i){const s=this.mapFieldsForObjectConstruct(n),o=r?` WITHIN GROUP (${r})`:"",u=`ARRAY_AGG(CASE WHEN group_set=${e} THEN OBJECT_CONSTRUCT_KEEP_NULL(${s}) END)${o}`;return i===void 0?`COALESCE(${u}, [])`:`COALESCE(ARRAY_SLICE(${u}, 0, ${i}), [])`}sqlAnyValueTurtle(e,n){const r=this.mapFieldsForObjectConstruct(n);return`(ARRAY_AGG(CASE WHEN group_set=${e} THEN OBJECT_CONSTRUCT_KEEP_NULL(${r}) END) WITHIN GROUP (ORDER BY 1 ASC NULLS LAST))[0]`}sqlAnyValueLastTurtle(e,n,r){return`(ARRAY_AGG(CASE WHEN group_set=${n} THEN ${e} END) WITHIN GROUP (ORDER BY ${e} ASC NULLS LAST))[0] AS ${r}`}sqlCoaleseMeasuresInline(e,n){const r=this.mapFieldsForObjectConstruct(n),i=n.map(s=>`'${s.sqlOutputName}', NULL`).join(", ");return`COALESCE(ARRAY_AGG(CASE WHEN group_set=${e} THEN OBJECT_CONSTRUCT_KEEP_NULL(${r}) END)[0], OBJECT_CONSTRUCT_KEEP_NULL(${i}))`}sqlUnnestAlias(e,n,r,i,s,o){const u=this.sqlMaybeQuoteIdentifier(n);return s?`LEFT JOIN lateral flatten(input => ${e}) as ${u}`:`LEFT JOIN LATERAL FLATTEN(INPUT => ifnull(${e},[1])) AS ${u}`}sqlSumDistinctHashedKey(e){e=`${e}::STRING`;const n=`to_number(substr(md5_hex(${e}), 1, 15), repeat('X', 15)) * 4294967296`,r=`to_number(substr(md5_hex(${e}), 16, 8), repeat('X', 8))`;return`(${n} + ${r})`}sqlSumDistinct(e,n,r){const i=this.sqlSumDistinctHashedKey(e),s=1e8,o=`(CAST (COALESCE(${n},0)*${s} as INT))`,u=`(SUM(DISTINCT ${i} + ${o}) - SUM(DISTINCT ${i}))/${s}`;if(r==="SUM")return u;if(r==="AVG")return`(${u})/NULLIF(COUNT(DISTINCT CASE WHEN ${n} IS NOT NULL THEN ${e} END),0)`;throw new Error(`Unknown Symmetric Aggregate function ${r}`)}sqlGenerateUUID(){return"UUID_STRING()"}sqlFieldReference(e,n,r,i){const s=this.sqlMaybeQuoteIdentifier(r);if(r==="__row_id")return`"${e}".INDEX::varchar`;if(n.startsWith("array")){let o=`"${e}".value`;switch(n==="array[record]"&&(o+=`:${s}`),i){case"record":case"array":i="VARIANT";break;case"string":i="VARCHAR";break;case"number":i="DOUBLE";break;case"struct":throw new Error("NOT STRUCT PLEASE")}return`${o}::${i}`}else if(n==="record")return`${e}:${s}`;return`${e}.${s}`}sqlUnnestPipelineHead(e,n){let r=n;return e&&(r=`[${r}]`),`TABLE(FLATTEN(input =>${r}))`}sqlCreateFunction(e,n){throw new Error("not implemented yet")}sqlCreateFunctionCombineLastStage(e){throw new Error("not implemented yet")}sqlSelectAliasAsStruct(e){return`OBJECT_CONSTRUCT_KEEP_NULL(${e}.*)`}sqlMaybeQuoteIdentifier(e){return'"'+e.replace(/"/g,'""')+'"'}sqlCreateTableAsSelect(e,n){return`
|
|
62
62
|
CREATE TEMP TABLE IF NOT EXISTS \`${e}\`
|
|
63
63
|
AS (
|
|
64
64
|
${(0,Exe.indent)(n)}
|
|
@@ -4193,7 +4193,7 @@ class bxe extends fp.Dialect {
|
|
|
4193
4193
|
return `(${n} + ${r})`;
|
|
4194
4194
|
}
|
|
4195
4195
|
sqlSumDistinct(e, n, r) {
|
|
4196
|
-
const i = this.sqlSumDistinctHashedKey(e), s = 1e8, o = `(COALESCE(${n},0)*${s})`, u = `(SUM(DISTINCT ${i} + ${o}) - SUM(DISTINCT ${i}))/${s}`;
|
|
4196
|
+
const i = this.sqlSumDistinctHashedKey(e), s = 1e8, o = `(CAST (COALESCE(${n},0)*${s} as INT))`, u = `(SUM(DISTINCT ${i} + ${o}) - SUM(DISTINCT ${i}))/${s}`;
|
|
4197
4197
|
if (r === "SUM")
|
|
4198
4198
|
return u;
|
|
4199
4199
|
if (r === "AVG")
|
|
@@ -58,7 +58,7 @@ ${Gk}
|
|
|
58
58
|
SELECT UNNEST(list(distinct {key:${e}, ${n.map((i,s)=>`val${s}: ${i}`).join(",")}})) a
|
|
59
59
|
)
|
|
60
60
|
)`}sqlSampleTable(e,n){if(n!==void 0){if((0,rd.isSamplingEnable)(n)&&n.enable&&(n=this.defaultSampling),(0,rd.isSamplingRows)(n))return`(SELECT * FROM ${e} USING SAMPLE ${n.rows})`;if((0,rd.isSamplingPercent)(n))return`(SELECT * FROM ${e} USING SAMPLE ${n.percent} PERCENT (bernoulli))`}return e}sqlOrderBy(e){return`ORDER BY ${e.map(n=>`${n} NULLS LAST`).join(",")}`}sqlLiteralString(e){return"'"+e.replace(/'/g,"''")+"'"}sqlLiteralRegexp(e){return"'"+e.replace(/'/g,"''")+"'"}getDialectFunctionOverrides(){return(0,zk.expandOverrideMap)(hxe.DUCKDB_MALLOY_STANDARD_OVERLOADS)}getDialectFunctions(){return(0,zk.expandBlueprintMap)(dxe.DUCKDB_DIALECT_FUNCTIONS)}malloyTypeToSQLType(e){return e.type==="number"?e.numberType==="integer"?"integer":"double precision":e.type==="string"?"varchar":e.type}parseDuckDBType(e){const n=new gxe(e);try{return n.typeDef()}catch(r){if(r instanceof Qk.TinyParseError)return{type:"sql native",rawType:e};throw r}}sqlTypeToMalloyType(e){var n,r,i;const s=e.replace(/^DECIMAL\(\d+,\d+\)/g,"DECIMAL"),o=(r=(n=s.match(/^(\w+)/))===null||n===void 0?void 0:n.at(0))!==null&&r!==void 0?r:s;return(i=_6[o.toUpperCase()])!==null&&i!==void 0?i:{type:"sql native",rawType:e.toLowerCase()}}castToString(e){return`CAST(${e} as VARCHAR)`}concat(...e){return e.join(" || ")}validateTypeName(e){return e.match(/^[A-Za-z\s(),[\]0-9]*$/)!==null}sqlAlterTimeExpr(e){let n=e.units,r=e.kids.delta.sql;n==="quarter"?(n="month",r=`${r}*3`):n==="week"&&(n="day",r=`${r}*7`);const i=`INTERVAL (${r}) ${n}`;return`${e.kids.base.sql} ${e.op} ${i}`}sqlRegexpMatch(e){return`REGEXP_MATCHES(${e.kids.expr.sql},${e.kids.regex.sql})`}sqlMeasureTimeExpr(e){const n=e.kids.left,r=e.kids.right;let i=n.sql||"",s=r.sql||"";return(0,fxe.inDays)(e.units)||(rd.TD.isDate(n.typeDef)&&(i=`${i}::TIMESTAMP`),rd.TD.isDate(r.typeDef)&&(s=`${s}::TIMESTAMP`)),`DATE_SUB('${e.units}', ${i}, ${s})`}sqlLiteralRecord(e){return"{"+Object.entries(e.kids).map(([r,i])=>`${this.sqlMaybeQuoteIdentifier(r)}:${i.sql}`).join(",")+"}"}}gE.DuckDBDialect=pxe;class gxe extends Qk.TinyParser{constructor(e){super(e,{space:/^\s+/,qsingle:/^'([^']|'')*'/,qdouble:/^"([^"]|"")*"/,size:/^\(\d+\)/,precision:/^\(\d+,\d+\)/,arrayOf:/^\[]/,char:/^[,:[\]()-]/,id:/^\w+/})}unquoteName(e){return e.type==="qsingle"?e.text.replace("''",""):e.type==="qdouble"?e.text.replace('""',""):e.text}sqlID(e){return e.text.toUpperCase()}typeDef(){const e=this.next("id"),n=this.sqlID(e);let r;if(n==="VARCHAR"&&this.peek().type==="size"&&this.next(),(n==="DECIMAL"||n==="NUMERIC")&&this.peek().type==="precision")this.next(),r={type:"number",numberType:"float"};else if(n==="TIMESTAMP")this.peek().text==="WITH"&&this.nextText("WITH","TIME","ZONE"),r={type:"timestamp"};else if(_6[n])r=_6[n];else if(n==="STRUCT")for(this.next("("),r={type:"record",fields:[]};;){const i=this.next();if(i.type==="qsingle"||i.type==="qdouble"||i.type==="id"){const s=this.typeDef();r.fields.push((0,rd.mkFieldDef)(s,this.unquoteName(i)))}else{if(i.type!==")")throw this.parseError("Expected identifier or ) to end STRUCT");break}this.peek().type===","&&this.next()}else if(e.type==="id"){let i=e.cursor+e.text.length;this.peek().type==="precision"&&this.next(),this.peek().type==="eof"&&(i=this.input.length),r={type:"sql native",rawType:this.input.slice(e.cursor,i)}}else throw this.parseError("Could not understand type");for(;this.peek().type==="arrayOf";)this.next(),r.type==="record"?r={type:"array",elementTypeDef:{type:"record_element"},fields:r.fields}:r={type:"array",elementTypeDef:r};return r}}(function(t){var e=T&&T.__createBinding||(Object.create?function(r,i,s,o){o===void 0&&(o=s);var u=Object.getOwnPropertyDescriptor(i,s);(!u||("get"in u?!i.__esModule:u.writable||u.configurable))&&(u={enumerable:!0,get:function(){return i[s]}}),Object.defineProperty(r,o,u)}:function(r,i,s,o){o===void 0&&(o=s),r[o]=i[s]}),n=T&&T.__exportStar||function(r,i){for(var s in r)s!=="default"&&!Object.prototype.hasOwnProperty.call(i,s)&&e(i,r,s)};Object.defineProperty(t,"__esModule",{value:!0}),n(gE,t)})(A6);var S6={},EE={},AE={};Object.defineProperty(AE,"__esModule",{value:!0}),AE.SNOWFLAKE_DIALECT_FUNCTIONS=void 0;const Ls=it,mxe={generic:"T"},vE={node:"aggregate_order_by",prefix:" WITHIN GROUP(",suffix:")"},C6={default_separator:{takes:{value:{dimension:"string"}},returns:{measure:"string"},supportsOrderBy:!0,impl:{expr:(0,Ls.sql)`LISTAGG(${(0,Ls.arg)("value")}, ',')${vE}`}},with_separator:{takes:{value:{dimension:"string"},separator:{literal:"string"}},returns:{measure:"string"},supportsOrderBy:!0,impl:{expr:(0,Ls.sql)`LISTAGG(${(0,Ls.arg)("value")}, ${(0,Ls.arg)("separator")})${vE}`}}},yxe={default_separator:{...C6.default_separator,isSymmetric:!0,impl:{expr:(0,Ls.sql)`LISTAGG(DISTINCT ${(0,Ls.arg)("value")}, ',')${vE}`}},with_separator:{...C6.with_separator,isSymmetric:!0,impl:{expr:(0,Ls.sql)`LISTAGG(DISTINCT ${(0,Ls.arg)("value")}, ${(0,Ls.arg)("separator")})${vE}`}}};AE.SNOWFLAKE_DIALECT_FUNCTIONS={string_agg:C6,string_agg_distinct:yxe,hll_accumulate:{default:{takes:{value:{dimension:mxe}},returns:{measure:{sql_native:"hyperloglog"}},generic:{T:["string","number"]},isSymmetric:!0,impl:{function:"hll_accumulate"}}},hll_combine:{takes:{value:{sql_native:"hyperloglog"}},returns:{measure:{sql_native:"hyperloglog"}},impl:{function:"hll_combine"},isSymmetric:!0},hll_estimate:{takes:{value:{sql_native:"hyperloglog"}},returns:{dimension:"number"},impl:{function:"hll_estimate"}},hll_export:{takes:{value:{sql_native:"hyperloglog"}},returns:{dimension:{sql_native:"bytes"}},impl:{function:"hll_export"}},hll_import:{takes:{value:{sql_native:"bytes"}},returns:{dimension:{sql_native:"hyperloglog"}},impl:{function:"hll_import"}},...(0,Ls.def)("repeat",{str:"string",n:"number"},"string"),...(0,Ls.def)("reverse",{str:"string"},"string")};var _E={};Object.defineProperty(_E,"__esModule",{value:!0}),_E.SNOWFLAKE_MALLOY_STANDARD_OVERLOADS=void 0,_E.SNOWFLAKE_MALLOY_STANDARD_OVERLOADS={chr:{sql:"COALESCE(CHR(${value}), '')"},div:{sql:"CASE WHEN DIV0(${dividend}, ${divisor}) < 0 THEN CEIL(DIV0(${dividend}, ${divisor})) ELSE FLOOR(DIV0(${dividend}, ${divisor})) END"},is_inf:{sql:"COALESCE(${value} = 'inf'::FLOAT OR ${value} = '-inf'::FLOAT, false)"},is_nan:{sql:"COALESCE(${value} = 'NAN'::FLOAT, false)"},length:{function:"LENGTH"},byte_length:{sql:"CEIL(BIT_LENGTH(${value}) / 8)"},log:{sql:"LOG(${base}, ${value})"},rand:{sql:"UNIFORM(0::FLOAT, 1::FLOAT, RANDOM())"},regexp_extract:{sql:"REGEXP_SUBSTR(${value}, ${pattern}, 1, 1, 'e')"},starts_with:{sql:"COALESCE(STARTSWITH(${value}, ${prefix}), false)"},ends_with:{sql:"COALESCE(ENDSWITH(${value}, ${suffix}), false)"},strpos:{sql:"POSITION(${search_string}, ${test_string})"},trunc:{to_integer:{sql:"CASE WHEN ${value} < 0 THEN CEIL(${value}) ELSE FLOOR(${value}) END"},to_precision:{sql:"CASE WHEN ${value} < 0 THEN CEIL(${value} * POW(10, ${precision})) / POW(10, ${precision}) ELSE FLOOR(${value} * POW(10, ${precision})) / POW(10, ${precision}) END"}}},Object.defineProperty(EE,"__esModule",{value:!0}),EE.SnowflakeDialect=void 0;const Exe=Ft,es=Ke,Wk=Ul,hp=Ml,Axe=AE,vxe=_E,_xe={day_of_week:"dayofweek",day_of_year:"dayofyear"},Sxe={varchar:{type:"string"},text:{type:"string"},string:{type:"string"},char:{type:"string"},character:{type:"string"},nvarchar:{type:"string"},nvarchar2:{type:"string"},"char varying":{type:"string"},"nchar varying":{type:"string"},number:{type:"number",numberType:"integer"},numeric:{type:"number",numberType:"integer"},decimal:{type:"number",numberType:"integer"},dec:{type:"number",numberType:"integer"},integer:{type:"number",numberType:"integer"},int:{type:"number",numberType:"integer"},bigint:{type:"number",numberType:"integer"},smallint:{type:"number",numberType:"integer"},tinyint:{type:"number",numberType:"integer"},byteint:{type:"number",numberType:"integer"},float:{type:"number",numberType:"float"},float4:{type:"number",numberType:"float"},float8:{type:"number",numberType:"float"},double:{type:"number",numberType:"float"},"double precision":{type:"number",numberType:"float"},real:{type:"number",numberType:"float"},boolean:{type:"boolean"},date:{type:"date"},timestamp:{type:"timestamp"},timestampntz:{type:"timestamp"},timestamp_ntz:{type:"timestamp"},"timestamp without time zone":{type:"timestamp"},timestamptz:{type:"timestamp"},timestamp_tz:{type:"timestamp"},"timestamp with time zone":{type:"timestamp"}};class Cxe extends hp.Dialect{constructor(){super(...arguments),this.name="snowflake",this.experimental=!1,this.defaultNumberType="NUMBER",this.defaultDecimalType="NUMBER",this.udfPrefix="__udf",this.hasFinalStage=!1,this.divisionIsInteger=!1,this.supportsSumDistinctFunction=!0,this.supportsSafeCast=!0,this.supportsNesting=!0,this.defaultSampling={rows:5e4},this.supportsHyperLogLog=!0,this.unnestWithNumbers=!1,this.supportUnnestArrayAgg=!1,this.supportsAggDistinct=!1,this.supportsCTEinCoorelatedSubQueries=!1,this.dontUnionIndex=!1,this.supportsQualify=!1,this.supportsPipelinesInViews=!1,this.supportsComplexFilteredSources=!1}quoteTablePath(e){return e}sqlGroupSetTable(e){return`CROSS JOIN (SELECT index as group_set FROM TABLE(FLATTEN(ARRAY_GENERATE_RANGE(0, ${e+1}))))`}sqlAnyValue(e,n){return`(ARRAY_AGG(CASE WHEN group_set=${e} THEN ${n} END) WITHIN GROUP (ORDER BY ${n} ASC NULLS LAST))[0]`}mapFields(e){return e.map(n=>`
|
|
61
|
-
${n.sqlExpression} as ${n.sqlOutputName}`).join(", ")}mapFieldsForObjectConstruct(e){return e.map(n=>`'${n.rawName}', (${n.sqlExpression})`).join(", ")}sqlAggregateTurtle(e,n,r,i){const s=this.mapFieldsForObjectConstruct(n),o=r?` WITHIN GROUP (${r})`:"",u=`ARRAY_AGG(CASE WHEN group_set=${e} THEN OBJECT_CONSTRUCT_KEEP_NULL(${s}) END)${o}`;return i===void 0?`COALESCE(${u}, [])`:`COALESCE(ARRAY_SLICE(${u}, 0, ${i}), [])`}sqlAnyValueTurtle(e,n){const r=this.mapFieldsForObjectConstruct(n);return`(ARRAY_AGG(CASE WHEN group_set=${e} THEN OBJECT_CONSTRUCT_KEEP_NULL(${r}) END) WITHIN GROUP (ORDER BY 1 ASC NULLS LAST))[0]`}sqlAnyValueLastTurtle(e,n,r){return`(ARRAY_AGG(CASE WHEN group_set=${n} THEN ${e} END) WITHIN GROUP (ORDER BY ${e} ASC NULLS LAST))[0] AS ${r}`}sqlCoaleseMeasuresInline(e,n){const r=this.mapFieldsForObjectConstruct(n),i=n.map(s=>`'${s.sqlOutputName}', NULL`).join(", ");return`COALESCE(ARRAY_AGG(CASE WHEN group_set=${e} THEN OBJECT_CONSTRUCT_KEEP_NULL(${r}) END)[0], OBJECT_CONSTRUCT_KEEP_NULL(${i}))`}sqlUnnestAlias(e,n,r,i,s,o){const u=this.sqlMaybeQuoteIdentifier(n);return s?`LEFT JOIN lateral flatten(input => ${e}) as ${u}`:`LEFT JOIN LATERAL FLATTEN(INPUT => ifnull(${e},[1])) AS ${u}`}sqlSumDistinctHashedKey(e){e=`${e}::STRING`;const n=`to_number(substr(md5_hex(${e}), 1, 15), repeat('X', 15)) * 4294967296`,r=`to_number(substr(md5_hex(${e}), 16, 8), repeat('X', 8))`;return`(${n} + ${r})`}sqlSumDistinct(e,n,r){const i=this.sqlSumDistinctHashedKey(e),s=1e8,o=`(COALESCE(${n},0)*${s})`,u=`(SUM(DISTINCT ${i} + ${o}) - SUM(DISTINCT ${i}))/${s}`;if(r==="SUM")return u;if(r==="AVG")return`(${u})/NULLIF(COUNT(DISTINCT CASE WHEN ${n} IS NOT NULL THEN ${e} END),0)`;throw new Error(`Unknown Symmetric Aggregate function ${r}`)}sqlGenerateUUID(){return"UUID_STRING()"}sqlFieldReference(e,n,r,i){const s=this.sqlMaybeQuoteIdentifier(r);if(r==="__row_id")return`"${e}".INDEX::varchar`;if(n.startsWith("array")){let o=`"${e}".value`;switch(n==="array[record]"&&(o+=`:${s}`),i){case"record":case"array":i="VARIANT";break;case"string":i="VARCHAR";break;case"number":i="DOUBLE";break;case"struct":throw new Error("NOT STRUCT PLEASE")}return`${o}::${i}`}else if(n==="record")return`${e}:${s}`;return`${e}.${s}`}sqlUnnestPipelineHead(e,n){let r=n;return e&&(r=`[${r}]`),`TABLE(FLATTEN(input =>${r}))`}sqlCreateFunction(e,n){throw new Error("not implemented yet")}sqlCreateFunctionCombineLastStage(e){throw new Error("not implemented yet")}sqlSelectAliasAsStruct(e){return`OBJECT_CONSTRUCT_KEEP_NULL(${e}.*)`}sqlMaybeQuoteIdentifier(e){return'"'+e.replace(/"/g,'""')+'"'}sqlCreateTableAsSelect(e,n){return`
|
|
61
|
+
${n.sqlExpression} as ${n.sqlOutputName}`).join(", ")}mapFieldsForObjectConstruct(e){return e.map(n=>`'${n.rawName}', (${n.sqlExpression})`).join(", ")}sqlAggregateTurtle(e,n,r,i){const s=this.mapFieldsForObjectConstruct(n),o=r?` WITHIN GROUP (${r})`:"",u=`ARRAY_AGG(CASE WHEN group_set=${e} THEN OBJECT_CONSTRUCT_KEEP_NULL(${s}) END)${o}`;return i===void 0?`COALESCE(${u}, [])`:`COALESCE(ARRAY_SLICE(${u}, 0, ${i}), [])`}sqlAnyValueTurtle(e,n){const r=this.mapFieldsForObjectConstruct(n);return`(ARRAY_AGG(CASE WHEN group_set=${e} THEN OBJECT_CONSTRUCT_KEEP_NULL(${r}) END) WITHIN GROUP (ORDER BY 1 ASC NULLS LAST))[0]`}sqlAnyValueLastTurtle(e,n,r){return`(ARRAY_AGG(CASE WHEN group_set=${n} THEN ${e} END) WITHIN GROUP (ORDER BY ${e} ASC NULLS LAST))[0] AS ${r}`}sqlCoaleseMeasuresInline(e,n){const r=this.mapFieldsForObjectConstruct(n),i=n.map(s=>`'${s.sqlOutputName}', NULL`).join(", ");return`COALESCE(ARRAY_AGG(CASE WHEN group_set=${e} THEN OBJECT_CONSTRUCT_KEEP_NULL(${r}) END)[0], OBJECT_CONSTRUCT_KEEP_NULL(${i}))`}sqlUnnestAlias(e,n,r,i,s,o){const u=this.sqlMaybeQuoteIdentifier(n);return s?`LEFT JOIN lateral flatten(input => ${e}) as ${u}`:`LEFT JOIN LATERAL FLATTEN(INPUT => ifnull(${e},[1])) AS ${u}`}sqlSumDistinctHashedKey(e){e=`${e}::STRING`;const n=`to_number(substr(md5_hex(${e}), 1, 15), repeat('X', 15)) * 4294967296`,r=`to_number(substr(md5_hex(${e}), 16, 8), repeat('X', 8))`;return`(${n} + ${r})`}sqlSumDistinct(e,n,r){const i=this.sqlSumDistinctHashedKey(e),s=1e8,o=`(CAST (COALESCE(${n},0)*${s} as INT))`,u=`(SUM(DISTINCT ${i} + ${o}) - SUM(DISTINCT ${i}))/${s}`;if(r==="SUM")return u;if(r==="AVG")return`(${u})/NULLIF(COUNT(DISTINCT CASE WHEN ${n} IS NOT NULL THEN ${e} END),0)`;throw new Error(`Unknown Symmetric Aggregate function ${r}`)}sqlGenerateUUID(){return"UUID_STRING()"}sqlFieldReference(e,n,r,i){const s=this.sqlMaybeQuoteIdentifier(r);if(r==="__row_id")return`"${e}".INDEX::varchar`;if(n.startsWith("array")){let o=`"${e}".value`;switch(n==="array[record]"&&(o+=`:${s}`),i){case"record":case"array":i="VARIANT";break;case"string":i="VARCHAR";break;case"number":i="DOUBLE";break;case"struct":throw new Error("NOT STRUCT PLEASE")}return`${o}::${i}`}else if(n==="record")return`${e}:${s}`;return`${e}.${s}`}sqlUnnestPipelineHead(e,n){let r=n;return e&&(r=`[${r}]`),`TABLE(FLATTEN(input =>${r}))`}sqlCreateFunction(e,n){throw new Error("not implemented yet")}sqlCreateFunctionCombineLastStage(e){throw new Error("not implemented yet")}sqlSelectAliasAsStruct(e){return`OBJECT_CONSTRUCT_KEEP_NULL(${e}.*)`}sqlMaybeQuoteIdentifier(e){return'"'+e.replace(/"/g,'""')+'"'}sqlCreateTableAsSelect(e,n){return`
|
|
62
62
|
CREATE TEMP TABLE IF NOT EXISTS \`${e}\`
|
|
63
63
|
AS (
|
|
64
64
|
${(0,Exe.indent)(n)}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@malloydata/render",
|
|
3
|
-
"version": "0.0.234-
|
|
3
|
+
"version": "0.0.234-dev250205222325",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "dist/module/index.umd.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"build-types": "tsc --build --declaration --emitDeclarationOnly"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@malloydata/malloy": "^0.0.234-
|
|
34
|
+
"@malloydata/malloy": "^0.0.234-dev250205222325",
|
|
35
35
|
"@tanstack/solid-virtual": "^3.10.4",
|
|
36
36
|
"component-register": "^0.8.6",
|
|
37
37
|
"lodash": "^4.17.20",
|