@@ -41,6 +41,7 @@ export const warehouseInsightsApplicationSchema = z.object({
4141 } ) ,
4242 eventParametersTable : z . object ( {
4343 name : z . string ( ) ,
44+ eventNameField : z . string ( ) ,
4445 paramsNameField : z . string ( ) ,
4546 paramsValueField : z . string ( ) ,
4647 paramsValueNumberField : z . string ( ) . optional ( ) ,
@@ -106,17 +107,6 @@ export class WarehouseInsightsSqlBuilder extends InsightsSqlBuilder {
106107 ) ;
107108 }
108109
109- private enableDateBasedOptimizedEventParametersTable ( ) {
110- const eventParametersTable = this . getEventParametersTable ( ) ;
111- const startAt = this . query . time . startAt ;
112- const endAt = this . query . time . endAt ;
113-
114- return (
115- ! ! eventParametersTable . dateBasedCreatedAtField &&
116- dayjs ( endAt ) . diff ( startAt , 'day' ) >= 1
117- ) ;
118- }
119-
120110 private getEventTable ( ) {
121111 return this . getApplication ( ) . eventTable ;
122112 }
@@ -361,6 +351,43 @@ export class WarehouseInsightsSqlBuilder extends InsightsSqlBuilder {
361351 return groupSelectQueryArr ;
362352 }
363353
354+ buildInnerJoinQuery ( ) {
355+ const { filters, groups } = this . query ;
356+ const eventTable = this . getEventTable ( ) ;
357+ const eventParametersTable = this . getEventParametersTable ( ) ;
358+
359+ let innerJoinQuery = Prisma . empty ;
360+ if ( filters . length > 0 || groups . length > 0 ) {
361+ innerJoinQuery = Prisma . sql `INNER JOIN "${ Prisma . raw ( eventParametersTable . name ) } " ON "${ Prisma . raw ( eventTable . name ) } "."${ Prisma . raw ( eventTable . eventNameField ) } " = "${ Prisma . raw ( eventParametersTable . name ) } "."${ Prisma . raw ( eventParametersTable . eventNameField ) } "` ;
362+
363+ if ( filters . length > 0 ) {
364+ innerJoinQuery = Prisma . sql `${ innerJoinQuery } AND ${ Prisma . join (
365+ filters . map ( ( filter ) =>
366+ this . buildFilterQueryOperator (
367+ filter . type ,
368+ filter . operator ,
369+ filter . value
370+ )
371+ ) ,
372+ ' AND '
373+ ) } `;
374+ }
375+
376+ if ( groups . length > 0 ) {
377+ const groupConditions = groups . map (
378+ ( g ) =>
379+ Prisma . sql `"${ Prisma . raw ( eventParametersTable . name ) } "."${ Prisma . raw ( eventParametersTable . eventNameField ) } " = ${ g . value } `
380+ ) ;
381+ innerJoinQuery = Prisma . sql `${ innerJoinQuery } AND ${ Prisma . join (
382+ groupConditions ,
383+ ' OR '
384+ ) } `;
385+ }
386+ }
387+
388+ return innerJoinQuery ;
389+ }
390+
364391 buildWhereQueryArr ( ) {
365392 const { metrics } = this . query ;
366393 const eventTable = this . getEventTable ( ) ;
0 commit comments