onsdag 16 maj 2012

Promptmany för datum i Cognos 10.1.1 mot Netezza


I uppdraget  där jag arbetar har vi just nu Cognos 8.4.1 i kombination med en Netezzadatabas. Under 2011 började arbetet med en uppgradering till Cognos 10.1.1. Flertalet av rapporterna går mot SSAS-kuber men några går direkt mot databasen. Uppgraderingen gick bra med alla rapporter som går mot kub men problem uppstod med några av rapporterna som går direkt mot databasen. Gemensamt för dessa rapporter är att de har flervalspromptar för datum direkt i SQL:erna i frameworket.

SQL:erna i frameworket är av typen ”Pass-Through”, vilket betyder att utvecklaren är helt ansvarig för SQL:en som skickas till databasen. Cognos försöker med denna inställning inte att förändra eller editera koden. Efter flera vändor med frågor och lösningsförslag fram och tillbaka mellan oss och IBM under hösten och vintern kom IBM fram med en lösning.

Från början hade vi vanliga flervalspromptar i SQL:erna enligt nedan:

WHERE T_DATE in (#  promptmany('Parameter','DATE')  #)

Denna syntax fungerade inte, utan det blev fel med ”fnuttarna” runt datumen. Lösningen som IBM kom fram till resulterade i uttrycket nedan:

WHERE T_DATE in (#  join(',',  substitute ('^', 'DATE ', sq( split (', ', promptmany('Parameter','DATE')  ) ) )

Nu fungerar det att skicka in flera datum i en prompt mot Netezza.

Inga kommentarer:

Skicka en kommentar