1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344
| //不修改这个子程序 SUB ExtendQVDWhere(Name, ValVarName) LET T = Name & '_COLNAME'; LET ColName = $(T); LET Values = $(ValVarName); IF (len(Values) > 0) THEN IF len(WHERE_PART) > 0 THEN LET WHERE_PART = '$(WHERE_PART) AND mixmatch([$(ColName)],$(Values) )'; ELSE LET WHERE_PART = ' WHERE mixmatch([$(ColName)],$(Values))'; ENDIF ENDIF END SUB;
// 不修改这个子程序 SUB ExtendSQLWhere(Name, ValVarName) LET T = Name & '_COLNAME'; LET ColName = $(T); LET Values = $(ValVarName); IF (len(Values) > 0) THEN IF len(WHERE_PART) > 0 THEN LET WHERE_PART = '$(WHERE_PART) AND $(ColName) IN ( $(Values) )'; ELSE LET WHERE_PART = ' WHERE $(ColName) IN ( $(Values) )'; ENDIF ENDIF END SUB;
//不修改这个子程序 SUB BuildValueList(VarName, TableName, ColName, QuoteChrNum) IF ($(QuoteChrNum) = 0) THEN LET LOADEXPR = 'Concat($(ColName),' & chr(39) & ',' & chr(39) & ') AS CombinedData'; ELSE LET CHREXPR = ' chr(' & '$(QuoteChrNum)' & ') '; LET LOADEXPR = 'Concat( $(CHREXPR) & $(ColName) & $(CHREXPR)' & ',' & chr(39) & ',' & chr(39) & ') AS CombinedData'; ENDIF _TempTable: LOAD $(LOADEXPR) Resident $(TableName); Let vNoOfRows = NoOfRows('_TempTable'); IF $(vNoOfRows)> 0 THEN LET $(VarName) = Peek('CombinedData',0,'_TempTable'); ENDIF drop table _TempTable; drop table '$(TableName)'; END SUB;
SET ORIGIN=''; OdagBinding: LOAD * INLINE [ VAL $(odso_Origin Code){"quote": "", "delimiter": ""} ]; SET ORIGIN_COLNAME='Origin Code';
//SET ORIGIN_COLNAME = 'ORIGIN'; // SQL版本 CALL BuildValueList('ORIGIN', 'OdagBinding', 'VAL', 39); // 39是单引号的换行值
SET DEST=''; OdagBinding: LOAD * INLINE [ VAL $(odso_Destination Code){"quote": "", "delimiter": ""} ]; SET DEST_COLNAME='Destination Code'; // SET DEST_COLNAME='DEST'; // SQL version CALL BuildValueList('DEST', 'OdagBinding', 'VAL', 39); // 39是单引号的换行值
SET YEAR=''; OdagBinding: LOAD * INLINE [ VAL $(odso_Year){"quote": "", "delimiter": ""} ]; SET YEAR_COLNAME='Year'; // SET YEAR_COLNAME='YEAR'; // SQL version CALL BuildValueList('YEAR', 'OdagBinding', 'VAL', 0); //0表示没有对值进行包装,因为年份是数值型的
SET QUARTER=''; OdagBinding: LOAD * INLINE [ VAL $(odso_Quarter){"quote": "", "delimiter": ""} ]; SET QUARTER_COLNAME='Quarter'; // SET QUARTER_COLNAME='QUARTER'; // SQL version CALL BuildValueList('QUARTER', 'OdagBinding', 'VAL', 0); //0表示不包装值,因为四分之一是数值
SET TICKET_CARRIER=''; OdagBinding: LOAD * INLINE [ VAL $(odso_Ticket Carrier Code){"quote": "", "delimiter": ""} ]; SET TICKET_CARRIER_COLNAME = 'Ticket Carrier Code'; // SET TICKET_CARRIER_COLNAME = 'TICKET_CARRIER'; // SQL version CALL BuildValueList('TICKET_CARRIER', 'OdagBinding', 'VAL', 39); // 39是单引号的换行值
SET FARE_CLASS=''; OdagBinding: LOAD * INLINE [ VAL $(odso_Fare Class){"quote": "", "delimiter": ""} ]; SET FARE_CLASS_COLNAME='Fare Class'; // SET FARE_CLASS_COLNAME='FARE_CLASS'; // SQL version CALL BuildValueList('FARE_CLASS', 'OdagBinding', 'VAL', 39); // 39 is for single quote wrapping values
SET WHERE_PART = '';
FOR EACH fldname IN 'ORIGIN', 'DEST', 'YEAR', 'QUARTER', 'TICKET_CARRIER', 'FARE_CLASS' LET vallist = $(fldname); IF (IsNull(vallist)) THEN LET vallist = ''; ENDIF IF (len(vallist) > 0) THEN CALL ExtendQVDWhere('$(fldname)','vallist'); // CALL ExtendSQLWhere('$(fldname)','vallist'); // use this version for SQL ENDIF NEXT fldname
TRACE Generated WHERE clause: ; TRACE $(WHERE_PART);
//创建指向QVD位置的文件夹连接 LET FOLDER='lib://odag_apps';
LET FLIGHTS_QVD='[$(FOLDER)/FlightsUnder100k.qvd] (qvd)'; LET AIRLINES_QVD='[$(FOLDER)/AirlinesUnder100k.qvd] (qvd) WHERE Exists("Ticket Carrier Code","Ticket Carrier Code")'; LET ORIGINS_QVD='[$(FOLDER)/OriginAirportsUnder100k.qvd] (qvd) WHERE Exists("Origin Code","Origin Code")'; LET DESTS_QVD='[$(FOLDER)/DestAirportsUnder100k.qvd] (qvd) WHERE Exists("Destination Code","Destination Code")' ; LET FARES_QVD='[$(FOLDER)/FaresUnder100k.qvd] (qvd) WHERE Exists("Fare Class","Fare Class")';
// QVD version: LOAD * FROM $(FLIGHTS_QVD) $(WHERE_PART);
// SQL version: // Flights: // LOAD "FARE_CLASS" as "Fare Class", // "ORIGIN_STATE_ABR" as "Origin State", // "DEST_STATE_ABR" as "Destination State", // "QUARTER" as "Quarter", // "ORIGIN" as "Origin Code", // "DEST" as "Destination Code", // "TICKET_CARRIER" as "Ticket Carrier Code", // "YEAR" as "Year", // "FLIGHT_COUNT", // "PASSENGERS", // "DISTANCE", // "MKT_ID"; // SQL SELECT // "MKT_ID", // "YEAR", // "QUARTER", // "ORIGIN", // "ORIGIN_STATE_ABR", // "DEST", // "DEST_STATE_ABR", // "TICKET_CARRIER", // "FARE_CLASS", // "PASSENGERS", // "DISTANCE", // 1 AS "FLIGHT_COUNT" // FROM SAPH7T."/QT/AIRPORT_FACT" // $(WHERE_PART);
//用维度提取脚本替换 // QVD version: Airlines: LOAD * FROM $(AIRLINES_QVD);
// SQL version: // Airlines: // LOAD TICKET_CARRIER as "Ticket Carrier Code", // "Description" as Airline // WHERE Exists("Ticket Carrier Code","TICKET_CARRIER"); // SQL SELECT // "TICKET_CARRIER", // "Description" // FROM "SAPH7T"."/QT/CARRIERS";
// QVD version: OriginAirports: LOAD * FROM $(ORIGINS_QVD);
// SQL version: // OriginAirports: // LOAD "Code" as "Origin Code", // "Description" as "Origin Name" // WHERE Exists("Origin Code","Code"); // SQL SELECT "Code", // "Description" // FROM "SAPH7T"."/QT/AIRPORT_CODE";
// QVD version: DestAirports: LOAD * FROM $(DESTS_QVD);
// SQL version: // DestAirports: // LOAD "Code" as "Destination Code", // "Description" as "Destination Name" // WHERE Exists("Destination Code","Code"); // SQL SELECT "Code", // "Description" // FROM "SAPH7T"."/QT/AIRPORT_CODE";
// QVD version: Fares: LOAD * FROM $(FARES_QVD);
// SQL version: // Fares: // LOAD FARE_CLASS as "Fare Class", // "Fare_Class_Description" as "Fare Class Name" // WHERE Exists("Fare Class","FARE_CLASS"); // SQL SELECT "FARE_CLASS", // "Fare_Class_Description" // FROM "SAPH7T"."/QT/FARE_CLASS";
//更改# 7(可选): //此可选更改是添加应用程序可能需要的任何附加固定数据加载或脚本代码。
|