ralphkretzschmar opened a new issue #9199: Custom mysql query with time_range 
in Subquery (range from filter box)
URL: https://github.com/apache/incubator-superset/issues/9199
 
 
   Hello together,
   
   first of all i'm very new to superset and aswell making my first steps with 
mysql queries regarding BI.
   So please forgive me for my lack of knowledge and give me a hint if i could 
do better.
   
   If i'm wrong here, please let me know where to ask :)
   
   
   We are trying to gather certain data with  subqueries from a vtiger instance.
   But the SQL Engine transforms the query in such a case, that it doesn't get 
the needed data.
   
   What i try to achieve are the following steps:
   1. getting history data from a vtiger within a certain range (=time_range)
   2. sort it by date descending
   3. deduplicate by CRMID (grouped by crmid)
   
   
   
   ###  Here is the query i use to get the data:
   -----------------------
   select *
   from
           (
   select
           vtiger_modtracker_basic.crmid,
           vtiger_modtracker_basic.changedon,
           vtiger_modtracker_basic.status,        
           vtiger_modtracker_detail.fieldname,
           vtiger_modtracker_detail.prevalue,
           vtiger_modtracker_detail.postvalue,
           vtiger_potential.potentialname,
           vtiger_potential.potentialid,
           vtiger_potential.campaignname,
           vtiger_potentialscf.cf_948 AS Projectname
   from
           vtiger_modtracker_basic Inner join
           vtiger_modtracker_detail On vtiger_modtracker_detail.id = 
vtiger_modtracker_basic.id Inner join
           vtiger_potential On vtiger_potential.potentialid = 
vtiger_modtracker_basic.crmid Inner Join
           vtiger_potentialscf On vtiger_potentialscf.potentialid = 
vtiger_potential.potentialid
   where
           (vtiger_modtracker_basic.crmid, vtiger_modtracker_basic.changedon, 
vtiger_modtracker_detail.fieldname) in
                 (
                       select   vtiger_modtracker_basic.crmid, 
vtiger_modtracker_basic.changedon, vtiger_modtracker_detail.fieldname
                       from     vtiger_modtracker_basic inner join
                       vtiger_modtracker_detail On vtiger_modtracker_detail.id 
= vtiger_modtracker_basic.id      
                       where    vtiger_modtracker_detail.fieldname = 
'sales_stage'
                               AND vtiger_modtracker_basic.changedon  {{ 
time_range }}
                       group by vtiger_modtracker_basic.crmid
                 )
   order by vtiger_modtracker_basic.changedon DESC LIMIT 50000
   ) AS selection
   group by selection.crmid
   -----------------------
   
   what you expected to happen:
   1. that the "time_range" placeholder is removed by selected time_range
   2. that the query is not modified.
   
   
   ### Actual results - when i take a look at the query how it will be run
   SELECT postvalue AS postvalue,
          count(*) AS count
   FROM
     (select *
      from
        (select vtiger_modtracker_basic.crmid,
                vtiger_modtracker_basic.changedon,
                vtiger_modtracker_basic.status,
                vtiger_modtracker_detail.fieldname,
                vtiger_modtracker_detail.prevalue,
                vtiger_modtracker_detail.postvalue,
                vtiger_potential.potentialname,
                vtiger_potential.potentialid,
                vtiger_potential.campaignname,
                vtiger_potentialscf.cf_948 AS Projectname
         from vtiger_modtracker_basic
         Inner join vtiger_modtracker_detail On vtiger_modtracker_detail.id = 
vtiger_modtracker_basic.id
         Inner join vtiger_potential On vtiger_potential.potentialid = 
vtiger_modtracker_basic.crmid
         Inner Join vtiger_potentialscf On vtiger_potentialscf.potentialid = 
vtiger_potential.potentialid
         where (vtiger_modtracker_basic.crmid,
                vtiger_modtracker_basic.changedon,
                vtiger_modtracker_detail.fieldname) in
             (select vtiger_modtracker_basic.crmid,
                     vtiger_modtracker_basic.changedon,
                     vtiger_modtracker_detail.fieldname
              from vtiger_modtracker_basic
              inner join vtiger_modtracker_detail On 
vtiger_modtracker_detail.id = vtiger_modtracker_basic.id
              where vtiger_modtracker_detail.fieldname = 'sales_stage'
                AND vtiger_modtracker_basic.changedon
              group by vtiger_modtracker_basic.crmid)
         order by vtiger_modtracker_basic.changedon DESC
         LIMIT 18446744073709551610) AS selection
      group by selection.crmid) AS expr_qry
   WHERE changedon >= STR_TO_DATE('1920-02-25 00:00:00.000000', '%Y-%m-%d 
%H:%i:%s.%f')
   GROUP BY postvalue
   ORDER BY count DESC
   LIMIT 50000;
   
   what actually happens.
   Getting wrong data because the time range is not in the subquery anymore
   
   Thank you for your help in advance :)
   
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to