Commit 4239eed7 authored by Stefane Fermigier's avatar Stefane Fermigier Committed by GitHub

Merge pull request #3 from abilian/config_file+postgres_backend

config_file + postgres_backend + auth
parents de960516 a1d3ff81
************************
* IMPORTANT *
************************
1) the id columns must have _id at the end (product_id, person_id...)
2) each table's column name must be unique from the other tables column names
3) the columns name must be in a good order (hierarchy)
4) use a simple star modele with one key and numeric measures ( the other cases not tested yet)
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
"store_id";"store_type";"store_name";"store_number";"store_street_address";"store_city";"store_state";"store_postal_code";"store_country";"store_manager";"store_phone";"store_fax";"first_opened_date";"last_remodel_date";"store_sqft";"grocery_sqft";"frozen_sqft";"meat_sqft";"coffee_bar";"video_store";"salad_bar";"prepared_food";"florist"
0;"HeadQuarters";"HQ";0;"1 Alameda Way";"Alameda";"CA";"55555";"USA";"";"";"";"";"";0;0;0;0;0;0;0;0;0
1;"Supermarket";"Store 1";1;"2853 Bailey Rd";"Acapulco";"Guerrero";"55555";"Mexico";"Jones";"262-555-5124";"262-555-5121";"1982-01-09 00:00:00";"1990-12-05 00:00:00";23593;17475;3671;2447;0;0;0;0;0
2;"Small Grocery";"Store 2";2;"5203 Catanzaro Way";"Bellingham";"WA";"55555";"USA";"Smith";"605-555-8203";"605-555-8201";"1970-04-02 00:00:00";"1973-06-04 00:00:00";28206;22271;3561;2374;1;0;0;0;0
3;"Supermarket";"Store 3";3;"1501 Ramsey Circle";"Bremerton";"WA";"55555";"USA";"Davis";"509-555-1596";"509-555-1591";"1959-06-14 00:00:00";"1967-11-19 00:00:00";39696;24390;9184;6122;0;0;1;1;0
4;"Gourmet Supermarket";"Store 4";4;"433 St George Dr";"Camacho";"Zacatecas";"55555";"Mexico";"Johnson";"304-555-1474";"304-555-1471";"1994-09-27 00:00:00";"1995-12-01 00:00:00";23759;16844;4149;2766;1;0;1;1;1
5;"Small Grocery";"Store 5";5;"1250 Coggins Drive";"Guadalajara";"Jalisco";"55555";"Mexico";"Green";"801-555-4324";"801-555-4321";"1978-09-18 00:00:00";"1991-06-29 00:00:00";24597;15012;5751;3834;1;0;0;0;0
6;"Gourmet Supermarket";"Store 6";6;"5495 Mitchell Canyon Road";"Beverly Hills";"CA";"55555";"USA";"Maris";"958-555-5002";"958-555-5001";"1981-01-03 00:00:00";"1991-03-13 00:00:00";23688;15337;5011;3340;1;1;1;1;1
7;"Supermarket";"Store 7";7;"1077 Wharf Drive";"Los Angeles";"CA";"55555";"USA";"White";"477-555-7967";"477-555-7961";"1971-05-21 00:00:00";"1981-10-20 00:00:00";23598;14210;5633;3755;0;0;0;0;1
8;"Deluxe Supermarket";"Store 8";8;"3173 Buena Vista Ave";"Merida";"Yucatan";"55555";"Mexico";"Williams";"797-555-3417";"797-555-3411";"1958-09-23 00:00:00";"1967-11-18 00:00:00";30797;20141;6393;4262;1;1;1;1;1
9;"Mid-Size Grocery";"Store 9";9;"1872 El Pintado Road";"Mexico City";"DF";"55555";"Mexico";"Stuber";"439-555-3524";"439-555-3521";"1955-03-18 00:00:00";"1959-06-07 00:00:00";36509;22450;8435;5624;0;0;0;0;0
10;"Supermarket";"Store 10";10;"7894 Rotherham Dr";"Orizaba";"Veracruz";"55555";"Mexico";"Merz";"212-555-4774";"212-555-4771";"1979-04-13 00:00:00";"1982-01-30 00:00:00";34791;26354;5062;3375;0;0;1;1;0
11;"Supermarket";"Store 11";11;"5371 Holland Circle";"Portland";"OR";"55555";"USA";"Erickson";"685-555-8995";"685-555-8991";"1976-09-17 00:00:00";"1982-05-15 00:00:00";20319;16232;2452;1635;0;0;0;0;0
12;"Deluxe Supermarket";"Store 12";12;"1120 Westchester Pl";"Hidalgo";"Zacatecas";"55555";"Mexico";"Kalman";"151-555-1702";"151-555-1701";"1968-03-25 00:00:00";"1993-12-18 00:00:00";30584;21938;5188;3458;1;1;1;1;1
13;"Deluxe Supermarket";"Store 13";13;"5179 Valley Ave";"Salem";"OR";"55555";"USA";"Inmon";"977-555-2724";"977-555-2721";"1957-04-13 00:00:00";"1997-11-10 00:00:00";27694;18670;5415;3610;1;1;1;1;1
14;"Small Grocery";"Store 14";14;"4365 Indigo Ct";"San Francisco";"CA";"55555";"USA";"Strehlo";"135-555-4888";"135-555-4881";"1957-11-24 00:00:00";"1958-01-07 00:00:00";22478;15321;4294;2863;1;0;0;0;0
15;"Supermarket";"Store 15";15;"5006 Highland Drive";"Seattle";"WA";"55555";"USA";"Ollom";"893-555-1024";"893-555-1021";"1969-07-24 00:00:00";"1973-10-19 00:00:00";21215;13305;4746;3164;1;0;0;0;0
16;"Supermarket";"Store 16";16;"5922 La Salle Ct";"Spokane";"WA";"55555";"USA";"Mantle";"643-555-3645";"643-555-3641";"1974-08-23 00:00:00";"1977-07-13 00:00:00";30268;22063;4923;3282;0;0;0;0;0
17;"Deluxe Supermarket";"Store 17";17;"490 Risdon Road";"Tacoma";"WA";"55555";"USA";"Mays";"855-555-5581";"855-555-5581";"1970-05-30 00:00:00";"1976-06-23 00:00:00";33858;22123;7041;4694;1;0;1;1;1
18;"Mid-Size Grocery";"Store 18";18;"6764 Glen Road";"Hidalgo";"Zacatecas";"55555";"Mexico";"Brown";"528-555-8317";"528-555-8311";"1969-06-28 00:00:00";"1975-08-30 00:00:00";38382;30351;4819;3213;0;0;0;0;0
19;"Deluxe Supermarket";"Store 19";19;"6644 Sudance Drive";"Vancouver";"BC";"55555";"Canada";"Ruth";"862-555-7395";"862-555-7391";"1977-03-27 00:00:00";"1990-10-25 00:00:00";23112;16418;4016;2678;1;1;1;1;1
20;"Mid-Size Grocery";"Store 20";20;"3706 Marvelle Ln";"Victoria";"BC";"55555";"Canada";"Cobb";"897-555-1931";"897-555-1931";"1980-02-06 00:00:00";"1987-04-09 00:00:00";34452;27463;4193;2795;1;0;0;0;1
21;"Deluxe Supermarket";"Store 21";21;"4093 Steven Circle";"San Andres";"DF";"55555";"Mexico";"Jones";"493-555-4781";"493-555-4781";"1986-02-07 00:00:00";"1990-04-16 00:00:00";0;0;0;0;1;0;1;1;1
22;"Small Grocery";"Store 22";22;"9606 Julpum Loop";"Walla Walla";"WA";"55555";"USA";"Byrg";"881-555-5117";"881-555-5111";"1951-01-24 00:00:00";"1969-10-17 00:00:00";0;0;0;0;0;0;0;0;0
23;"Mid-Size Grocery";"Store 23";23;"3920 Noah Court";"Yakima";"WA";"55555";"USA";"Johnson";"170-555-8424";"170-555-8421";"1977-07-16 00:00:00";"1987-07-24 00:00:00";0;0;0;0;0;0;0;0;0
24;"Supermarket";"Store 24";24;"2342 Waltham St.";"San Diego";"CA";"55555";"USA";"Byrd";"111-555-0303";"111-555-0304";"1979-05-22 00:00:00";"1986-04-20 00:00:00";0;0;0;0;1;0;1;0;1
"time_id";"the_date";"the_day";"the_month";"the_year";"day_of_month";"week_of_year";"month_of_year";"quarter";"fiscal_period";"day_of_week"
367;"1997-01-01 00:00:00";"Wednesday";"January";2006;1;2;1;"Q1";"";3
368;"1997-01-02 00:00:00";"Thursday";"January";2006;2;2;1;"Q1";"";4
369;"1997-01-03 00:00:00";"Friday";"January";2006;3;2;1;"Q1";"";5
370;"1997-01-04 00:00:00";"Saturday";"January";2006;4;2;1;"Q1";"";6
371;"1997-01-05 00:00:00";"Sunday";"January";2006;5;3;1;"Q1";"";7
372;"1997-01-06 00:00:00";"Monday";"January";2006;6;3;1;"Q1";"";1
373;"1997-01-07 00:00:00";"Tuesday";"January";2006;7;3;1;"Q1";"";2
374;"1997-01-08 00:00:00";"Wednesday";"January";2006;8;3;1;"Q1";"";3
375;"1997-01-09 00:00:00";"Thursday";"January";2006;9;3;1;"Q1";"";4
376;"1997-01-10 00:00:00";"Friday";"January";2006;10;3;1;"Q1";"";5
377;"1997-01-11 00:00:00";"Saturday";"January";2006;11;3;1;"Q1";"";6
378;"1997-01-12 00:00:00";"Sunday";"January";2006;12;4;1;"Q1";"";7
379;"1997-01-13 00:00:00";"Monday";"January";2006;13;4;1;"Q1";"";1
380;"1997-01-14 00:00:00";"Tuesday";"January";2006;14;4;1;"Q1";"";2
381;"1997-01-15 00:00:00";"Wednesday";"January";2006;15;4;1;"Q1";"";3
382;"1997-01-16 00:00:00";"Thursday";"January";2006;16;4;1;"Q1";"";4
383;"1997-01-17 00:00:00";"Friday";"January";2006;17;4;1;"Q1";"";5
384;"1997-01-18 00:00:00";"Saturday";"January";2006;18;4;1;"Q1";"";6
385;"1997-01-19 00:00:00";"Sunday";"January";2006;19;5;1;"Q1";"";7
386;"1997-01-20 00:00:00";"Monday";"January";2006;20;5;1;"Q1";"";1
387;"1997-01-21 00:00:00";"Tuesday";"January";2006;21;5;1;"Q1";"";2
388;"1997-01-22 00:00:00";"Wednesday";"January";2006;22;5;1;"Q1";"";3
389;"1997-01-23 00:00:00";"Thursday";"January";2006;23;5;1;"Q1";"";4
390;"1997-01-24 00:00:00";"Friday";"January";2006;24;5;1;"Q1";"";5
391;"1997-01-25 00:00:00";"Saturday";"January";2006;25;5;1;"Q1";"";6
392;"1997-01-26 00:00:00";"Sunday";"January";2006;26;6;1;"Q1";"";7
393;"1997-01-27 00:00:00";"Monday";"January";2006;27;6;1;"Q1";"";1
394;"1997-01-28 00:00:00";"Tuesday";"January";2006;28;6;1;"Q1";"";2
395;"1997-01-29 00:00:00";"Wednesday";"January";2006;29;6;1;"Q1";"";3
396;"1997-01-30 00:00:00";"Thursday";"January";2006;30;6;1;"Q1";"";4
397;"1997-01-31 00:00:00";"Friday";"January";2006;31;6;1;"Q1";"";5
398;"1997-02-01 00:00:00";"Saturday";"February";2006;1;6;2;"Q1";"";6
399;"1997-02-02 00:00:00";"Sunday";"February";2006;2;7;2;"Q1";"";7
400;"1997-02-03 00:00:00";"Monday";"February";2006;3;7;2;"Q1";"";1
401;"1997-02-04 00:00:00";"Tuesday";"February";2006;4;7;2;"Q1";"";2
402;"1997-02-05 00:00:00";"Wednesday";"February";2006;5;7;2;"Q1";"";3
403;"1997-02-06 00:00:00";"Thursday";"February";2006;6;7;2;"Q1";"";4
404;"1997-02-07 00:00:00";"Friday";"February";2006;7;7;2;"Q1";"";5
405;"1997-02-08 00:00:00";"Saturday";"February";2006;8;7;2;"Q1";"";6
406;"1997-02-09 00:00:00";"Sunday";"February";2006;9;8;2;"Q1";"";7
407;"1997-02-10 00:00:00";"Monday";"February";2006;10;8;2;"Q1";"";1
408;"1997-02-11 00:00:00";"Tuesday";"February";2006;11;8;2;"Q1";"";2
409;"1997-02-12 00:00:00";"Wednesday";"February";2006;12;8;2;"Q1";"";3
410;"1997-02-13 00:00:00";"Thursday";"February";2006;13;8;2;"Q1";"";4
411;"1997-02-14 00:00:00";"Friday";"February";2006;14;8;2;"Q1";"";5
412;"1997-02-15 00:00:00";"Saturday";"February";2006;15;8;2;"Q1";"";6
413;"1997-02-16 00:00:00";"Sunday";"February";2006;16;9;2;"Q1";"";7
414;"1997-02-17 00:00:00";"Monday";"February";2006;17;9;2;"Q1";"";1
415;"1997-02-18 00:00:00";"Tuesday";"February";2006;18;9;2;"Q1";"";2
416;"1997-02-19 00:00:00";"Wednesday";"February";2006;19;9;2;"Q1";"";3
417;"1997-02-20 00:00:00";"Thursday";"February";2006;20;9;2;"Q1";"";4
418;"1997-02-21 00:00:00";"Friday";"February";2006;21;9;2;"Q1";"";5
419;"1997-02-22 00:00:00";"Saturday";"February";2006;22;9;2;"Q1";"";6
420;"1997-02-23 00:00:00";"Sunday";"February";2006;23;10;2;"Q1";"";7
421;"1997-02-24 00:00:00";"Monday";"February";2006;24;10;2;"Q1";"";1
422;"1997-02-25 00:00:00";"Tuesday";"February";2006;25;10;2;"Q1";"";2
423;"1997-02-26 00:00:00";"Wednesday";"February";2006;26;10;2;"Q1";"";3
424;"1997-02-27 00:00:00";"Thursday";"February";2006;27;10;2;"Q1";"";4
425;"1997-02-28 00:00:00";"Friday";"February";2006;28;10;2;"Q1";"";5
426;"1997-03-01 00:00:00";"Saturday";"March";2006;1;10;3;"Q1";"";6
427;"1997-03-02 00:00:00";"Sunday";"March";2006;2;11;3;"Q1";"";7
428;"1997-03-03 00:00:00";"Monday";"March";2006;3;11;3;"Q1";"";1
429;"1997-03-04 00:00:00";"Tuesday";"March";2006;4;11;3;"Q1";"";2
430;"1997-03-05 00:00:00";"Wednesday";"March";2006;5;11;3;"Q1";"";3
431;"1997-03-06 00:00:00";"Thursday";"March";2006;6;11;3;"Q1";"";4
432;"1997-03-07 00:00:00";"Friday";"March";2006;7;11;3;"Q1";"";5
433;"1997-03-08 00:00:00";"Saturday";"March";2006;8;11;3;"Q1";"";6
434;"1997-03-09 00:00:00";"Sunday";"March";2006;9;12;3;"Q1";"";7
435;"1997-03-10 00:00:00";"Monday";"March";2006;10;12;3;"Q1";"";1
436;"1997-03-11 00:00:00";"Tuesday";"March";2006;11;12;3;"Q1";"";2
437;"1997-03-12 00:00:00";"Wednesday";"March";2006;12;12;3;"Q1";"";3
438;"1997-03-13 00:00:00";"Thursday";"March";2006;13;12;3;"Q1";"";4
439;"1997-03-14 00:00:00";"Friday";"March";2006;14;12;3;"Q1";"";5
440;"1997-03-15 00:00:00";"Saturday";"March";2006;15;12;3;"Q1";"";6
441;"1997-03-16 00:00:00";"Sunday";"March";2006;16;13;3;"Q1";"";7
442;"1997-03-17 00:00:00";"Monday";"March";2006;17;13;3;"Q1";"";1
443;"1997-03-18 00:00:00";"Tuesday";"March";2006;18;13;3;"Q1";"";2
444;"1997-03-19 00:00:00";"Wednesday";"March";2006;19;13;3;"Q1";"";3
445;"1997-03-20 00:00:00";"Thursday";"March";2006;20;13;3;"Q1";"";4
446;"1997-03-21 00:00:00";"Friday";"March";2006;21;13;3;"Q1";"";5
447;"1997-03-22 00:00:00";"Saturday";"March";2006;22;13;3;"Q1";"";6
448;"1997-03-23 00:00:00";"Sunday";"March";2006;23;14;3;"Q1";"";7
449;"1997-03-24 00:00:00";"Monday";"March";2006;24;14;3;"Q1";"";1
450;"1997-03-25 00:00:00";"Tuesday";"March";2006;25;14;3;"Q1";"";2
451;"1997-03-26 00:00:00";"Wednesday";"March";2006;26;14;3;"Q1";"";3
452;"1997-03-27 00:00:00";"Thursday";"March";2006;27;14;3;"Q1";"";4
453;"1997-03-28 00:00:00";"Friday";"March";2006;28;14;3;"Q1";"";5
454;"1997-03-29 00:00:00";"Saturday";"March";2006;29;14;3;"Q1";"";6
455;"1997-03-30 00:00:00";"Sunday";"March";2006;30;15;3;"Q1";"";7
456;"1997-03-31 00:00:00";"Monday";"March";2006;31;15;3;"Q1";"";1
457;"1997-04-01 00:00:00";"Tuesday";"April";2006;1;15;4;"Q2";"";2
458;"1997-04-02 00:00:00";"Wednesday";"April";2006;2;15;4;"Q2";"";3
459;"1997-04-03 00:00:00";"Thursday";"April";2006;3;15;4;"Q2";"";4
460;"1997-04-04 00:00:00";"Friday";"April";2006;4;15;4;"Q2";"";5
461;"1997-04-05 00:00:00";"Saturday";"April";2006;5;15;4;"Q2";"";6
462;"1997-04-06 00:00:00";"Sunday";"April";2006;6;16;4;"Q2";"";7
463;"1997-04-07 00:00:00";"Monday";"April";2006;7;16;4;"Q2";"";1
464;"1997-04-08 00:00:00";"Tuesday";"April";2006;8;16;4;"Q2";"";2
465;"1997-04-09 00:00:00";"Wednesday";"April";2006;9;16;4;"Q2";"";3
466;"1997-04-10 00:00:00";"Thursday";"April";2006;10;16;4;"Q2";"";4
467;"1997-04-11 00:00:00";"Friday";"April";2006;11;16;4;"Q2";"";5
468;"1997-04-12 00:00:00";"Saturday";"April";2006;12;16;4;"Q2";"";6
469;"1997-04-13 00:00:00";"Sunday";"April";2006;13;17;4;"Q2";"";7
470;"1997-04-14 00:00:00";"Monday";"April";2006;14;17;4;"Q2";"";1
471;"1997-04-15 00:00:00";"Tuesday";"April";2006;15;17;4;"Q2";"";2
472;"1997-04-16 00:00:00";"Wednesday";"April";2006;16;17;4;"Q2";"";3
473;"1997-04-17 00:00:00";"Thursday";"April";2006;17;17;4;"Q2";"";4
474;"1997-04-18 00:00:00";"Friday";"April";2006;18;17;4;"Q2";"";5
475;"1997-04-19 00:00:00";"Saturday";"April";2006;19;17;4;"Q2";"";6
476;"1997-04-20 00:00:00";"Sunday";"April";2006;20;18;4;"Q2";"";7
477;"1997-04-21 00:00:00";"Monday";"April";2006;21;18;4;"Q2";"";1
478;"1997-04-22 00:00:00";"Tuesday";"April";2006;22;18;4;"Q2";"";2
479;"1997-04-23 00:00:00";"Wednesday";"April";2006;23;18;4;"Q2";"";3
480;"1997-04-24 00:00:00";"Thursday";"April";2006;24;18;4;"Q2";"";4
481;"1997-04-25 00:00:00";"Friday";"April";2006;25;18;4;"Q2";"";5
482;"1997-04-26 00:00:00";"Saturday";"April";2006;26;18;4;"Q2";"";6
483;"1997-04-27 00:00:00";"Sunday";"April";2006;27;19;4;"Q2";"";7
484;"1997-04-28 00:00:00";"Monday";"April";2006;28;19;4;"Q2";"";1
485;"1997-04-29 00:00:00";"Tuesday";"April";2006;29;19;4;"Q2";"";2
486;"1997-04-30 00:00:00";"Wednesday";"April";2006;30;19;4;"Q2";"";3
487;"1997-05-01 00:00:00";"Thursday";"May";2006;1;19;5;"Q2";"";4
488;"1997-05-02 00:00:00";"Friday";"May";2006;2;19;5;"Q2";"";5
489;"1997-05-03 00:00:00";"Saturday";"May";2006;3;19;5;"Q2";"";6
490;"1997-05-04 00:00:00";"Sunday";"May";2006;4;20;5;"Q2";"";7
491;"1997-05-05 00:00:00";"Monday";"May";2006;5;20;5;"Q2";"";1
492;"1997-05-06 00:00:00";"Tuesday";"May";2006;6;20;5;"Q2";"";2
493;"1997-05-07 00:00:00";"Wednesday";"May";2006;7;20;5;"Q2";"";3
494;"1997-05-08 00:00:00";"Thursday";"May";2006;8;20;5;"Q2";"";4
495;"1997-05-09 00:00:00";"Friday";"May";2006;9;20;5;"Q2";"";5
496;"1997-05-10 00:00:00";"Saturday";"May";2006;10;20;5;"Q2";"";6
497;"1997-05-11 00:00:00";"Sunday";"May";2006;11;21;5;"Q2";"";7
498;"1997-05-12 00:00:00";"Monday";"May";2006;12;21;5;"Q2";"";1
499;"1997-05-13 00:00:00";"Tuesday";"May";2006;13;21;5;"Q2";"";2
500;"1997-05-14 00:00:00";"Wednesday";"May";2006;14;21;5;"Q2";"";3
501;"1997-05-15 00:00:00";"Thursday";"May";2006;15;21;5;"Q2";"";4
502;"1997-05-16 00:00:00";"Friday";"May";2006;16;21;5;"Q2";"";5
503;"1997-05-17 00:00:00";"Saturday";"May";2006;17;21;5;"Q2";"";6
504;"1997-05-18 00:00:00";"Sunday";"May";2006;18;22;5;"Q2";"";7
505;"1997-05-19 00:00:00";"Monday";"May";2006;19;22;5;"Q2";"";1
506;"1997-05-20 00:00:00";"Tuesday";"May";2006;20;22;5;"Q2";"";2
507;"1997-05-21 00:00:00";"Wednesday";"May";2006;21;22;5;"Q2";"";3
508;"1997-05-22 00:00:00";"Thursday";"May";2006;22;22;5;"Q2";"";4
509;"1997-05-23 00:00:00";"Friday";"May";2006;23;22;5;"Q2";"";5
510;"1997-05-24 00:00:00";"Saturday";"May";2006;24;22;5;"Q2";"";6
511;"1997-05-25 00:00:00";"Sunday";"May";2006;25;23;5;"Q2";"";7
512;"1997-05-26 00:00:00";"Monday";"May";2006;26;23;5;"Q2";"";1
513;"1997-05-27 00:00:00";"Tuesday";"May";2006;27;23;5;"Q2";"";2
514;"1997-05-28 00:00:00";"Wednesday";"May";2006;28;23;5;"Q2";"";3
515;"1997-05-29 00:00:00";"Thursday";"May";2006;29;23;5;"Q2";"";4
516;"1997-05-30 00:00:00";"Friday";"May";2006;30;23;5;"Q2";"";5
517;"1997-05-31 00:00:00";"Saturday";"May";2006;31;23;5;"Q2";"";6
518;"1997-06-01 00:00:00";"Sunday";"June";2006;1;24;6;"Q2";"";7
519;"1997-06-02 00:00:00";"Monday";"June";2006;2;24;6;"Q2";"";1
520;"1997-06-03 00:00:00";"Tuesday";"June";2006;3;24;6;"Q2";"";2
521;"1997-06-04 00:00:00";"Wednesday";"June";2006;4;24;6;"Q2";"";3
522;"1997-06-05 00:00:00";"Thursday";"June";2006;5;24;6;"Q2";"";4
523;"1997-06-06 00:00:00";"Friday";"June";2006;6;24;6;"Q2";"";5
524;"1997-06-07 00:00:00";"Saturday";"June";2006;7;24;6;"Q2";"";6
525;"1997-06-08 00:00:00";"Sunday";"June";2006;8;25;6;"Q2";"";7
526;"1997-06-09 00:00:00";"Monday";"June";2006;9;25;6;"Q2";"";1
527;"1997-06-10 00:00:00";"Tuesday";"June";2006;10;25;6;"Q2";"";2
528;"1997-06-11 00:00:00";"Wednesday";"June";2006;11;25;6;"Q2";"";3
529;"1997-06-12 00:00:00";"Thursday";"June";2006;12;25;6;"Q2";"";4
530;"1997-06-13 00:00:00";"Friday";"June";2006;13;25;6;"Q2";"";5
531;"1997-06-14 00:00:00";"Saturday";"June";2006;14;25;6;"Q2";"";6
532;"1997-06-15 00:00:00";"Sunday";"June";2006;15;26;6;"Q2";"";7
533;"1997-06-16 00:00:00";"Monday";"June";2006;16;26;6;"Q2";"";1
534;"1997-06-17 00:00:00";"Tuesday";"June";2006;17;26;6;"Q2";"";2
535;"1997-06-18 00:00:00";"Wednesday";"June";2006;18;26;6;"Q2";"";3
536;"1997-06-19 00:00:00";"Thursday";"June";2006;19;26;6;"Q2";"";4
537;"1997-06-20 00:00:00";"Friday";"June";2006;20;26;6;"Q2";"";5
538;"1997-06-21 00:00:00";"Saturday";"June";2006;21;26;6;"Q2";"";6
539;"1997-06-22 00:00:00";"Sunday";"June";2006;22;27;6;"Q2";"";7
540;"1997-06-23 00:00:00";"Monday";"June";2006;23;27;6;"Q2";"";1
541;"1997-06-24 00:00:00";"Tuesday";"June";2006;24;27;6;"Q2";"";2
542;"1997-06-25 00:00:00";"Wednesday";"June";2006;25;27;6;"Q2";"";3
543;"1997-06-26 00:00:00";"Thursday";"June";2006;26;27;6;"Q2";"";4
544;"1997-06-27 00:00:00";"Friday";"June";2006;27;27;6;"Q2";"";5
545;"1997-06-28 00:00:00";"Saturday";"June";2006;28;27;6;"Q2";"";6
546;"1997-06-29 00:00:00";"Sunday";"June";2006;29;28;6;"Q2";"";7
547;"1997-06-30 00:00:00";"Monday";"June";2006;30;28;6;"Q2";"";1
548;"1997-07-01 00:00:00";"Tuesday";"July";2006;1;28;7;"Q3";"";2
549;"1997-07-02 00:00:00";"Wednesday";"July";2006;2;28;7;"Q3";"";3
550;"1997-07-03 00:00:00";"Thursday";"July";2006;3;28;7;"Q3";"";4
551;"1997-07-04 00:00:00";"Friday";"July";2006;4;28;7;"Q3";"";5
552;"1997-07-05 00:00:00";"Saturday";"July";2006;5;28;7;"Q3";"";6
553;"1997-07-06 00:00:00";"Sunday";"July";2006;6;29;7;"Q3";"";7
554;"1997-07-07 00:00:00";"Monday";"July";2006;7;29;7;"Q3";"";1
555;"1997-07-08 00:00:00";"Tuesday";"July";2006;8;29;7;"Q3";"";2
556;"1997-07-09 00:00:00";"Wednesday";"July";2006;9;29;7;"Q3";"";3
557;"1997-07-10 00:00:00";"Thursday";"July";2006;10;29;7;"Q3";"";4
558;"1997-07-11 00:00:00";"Friday";"July";2006;11;29;7;"Q3";"";5
559;"1997-07-12 00:00:00";"Saturday";"July";2006;12;29;7;"Q3";"";6
560;"1997-07-13 00:00:00";"Sunday";"July";2006;13;30;7;"Q3";"";7
561;"1997-07-14 00:00:00";"Monday";"July";2006;14;30;7;"Q3";"";1
562;"1997-07-15 00:00:00";"Tuesday";"July";2006;15;30;7;"Q3";"";2
563;"1997-07-16 00:00:00";"Wednesday";"July";2006;16;30;7;"Q3";"";3
564;"1997-07-17 00:00:00";"Thursday";"July";2006;17;30;7;"Q3";"";4
565;"1997-07-18 00:00:00";"Friday";"July";2006;18;30;7;"Q3";"";5
566;"1997-07-19 00:00:00";"Saturday";"July";2006;19;30;7;"Q3";"";6
567;"1997-07-20 00:00:00";"Sunday";"July";2006;20;31;7;"Q3";"";7
568;"1997-07-21 00:00:00";"Monday";"July";2006;21;31;7;"Q3";"";1
569;"1997-07-22 00:00:00";"Tuesday";"July";2006;22;31;7;"Q3";"";2
570;"1997-07-23 00:00:00";"Wednesday";"July";2006;23;31;7;"Q3";"";3
571;"1997-07-24 00:00:00";"Thursday";"July";2006;24;31;7;"Q3";"";4
572;"1997-07-25 00:00:00";"Friday";"July";2006;25;31;7;"Q3";"";5
573;"1997-07-26 00:00:00";"Saturday";"July";2006;26;31;7;"Q3";"";6
574;"1997-07-27 00:00:00";"Sunday";"July";2006;27;32;7;"Q3";"";7
575;"1997-07-28 00:00:00";"Monday";"July";2006;28;32;7;"Q3";"";1
576;"1997-07-29 00:00:00";"Tuesday";"July";2006;29;32;7;"Q3";"";2
577;"1997-07-30 00:00:00";"Wednesday";"July";2006;30;32;7;"Q3";"";3
578;"1997-07-31 00:00:00";"Thursday";"July";2006;31;32;7;"Q3";"";4
579;"1997-08-01 00:00:00";"Friday";"August";2006;1;32;8;"Q3";"";5
580;"1997-08-02 00:00:00";"Saturday";"August";2006;2;32;8;"Q3";"";6
581;"1997-08-03 00:00:00";"Sunday";"August";2006;3;33;8;"Q3";"";7
582;"1997-08-04 00:00:00";"Monday";"August";2006;4;33;8;"Q3";"";1
583;"1997-08-05 00:00:00";"Tuesday";"August";2006;5;33;8;"Q3";"";2
584;"1997-08-06 00:00:00";"Wednesday";"August";2006;6;33;8;"Q3";"";3
585;"1997-08-07 00:00:00";"Thursday";"August";2006;7;33;8;"Q3";"";4
586;"1997-08-08 00:00:00";"Friday";"August";2006;8;33;8;"Q3";"";5
587;"1997-08-09 00:00:00";"Saturday";"August";2006;9;33;8;"Q3";"";6
588;"1997-08-10 00:00:00";"Sunday";"August";2006;10;34;8;"Q3";"";7
589;"1997-08-11 00:00:00";"Monday";"August";2006;11;34;8;"Q3";"";1
590;"1997-08-12 00:00:00";"Tuesday";"August";2006;12;34;8;"Q3";"";2
591;"1997-08-13 00:00:00";"Wednesday";"August";2006;13;34;8;"Q3";"";3
592;"1997-08-14 00:00:00";"Thursday";"August";2006;14;34;8;"Q3";"";4
593;"1997-08-15 00:00:00";"Friday";"August";2006;15;34;8;"Q3";"";5
594;"1997-08-16 00:00:00";"Saturday";"August";2006;16;34;8;"Q3";"";6
595;"1997-08-17 00:00:00";"Sunday";"August";2006;17;35;8;"Q3";"";7
596;"1997-08-18 00:00:00";"Monday";"August";2006;18;35;8;"Q3";"";1
597;"1997-08-19 00:00:00";"Tuesday";"August";2006;19;35;8;"Q3";"";2
598;"1997-08-20 00:00:00";"Wednesday";"August";2006;20;35;8;"Q3";"";3
599;"1997-08-21 00:00:00";"Thursday";"August";2006;21;35;8;"Q3";"";4
600;"1997-08-22 00:00:00";"Friday";"August";2006;22;35;8;"Q3";"";5
601;"1997-08-23 00:00:00";"Saturday";"August";2006;23;35;8;"Q3";"";6
602;"1997-08-24 00:00:00";"Sunday";"August";2006;24;36;8;"Q3";"";7
603;"1997-08-25 00:00:00";"Monday";"August";2006;25;36;8;"Q3";"";1
604;"1997-08-26 00:00:00";"Tuesday";"August";2006;26;36;8;"Q3";"";2
605;"1997-08-27 00:00:00";"Wednesday";"August";2006;27;36;8;"Q3";"";3
606;"1997-08-28 00:00:00";"Thursday";"August";2006;28;36;8;"Q3";"";4
607;"1997-08-29 00:00:00";"Friday";"August";2006;29;36;8;"Q3";"";5
608;"1997-08-30 00:00:00";"Saturday";"August";2006;30;36;8;"Q3";"";6
609;"1997-08-31 00:00:00";"Sunday";"August";2006;31;37;8;"Q3";"";7
610;"1997-09-01 00:00:00";"Monday";"September";2006;1;37;9;"Q3";"";1
611;"1997-09-02 00:00:00";"Tuesday";"September";2006;2;37;9;"Q3";"";2
612;"1997-09-03 00:00:00";"Wednesday";"September";2006;3;37;9;"Q3";"";3
613;"1997-09-04 00:00:00";"Thursday";"September";2006;4;37;9;"Q3";"";4
614;"1997-09-05 00:00:00";"Friday";"September";2006;5;37;9;"Q3";"";5
615;"1997-09-06 00:00:00";"Saturday";"September";2006;6;37;9;"Q3";"";6
616;"1997-09-07 00:00:00";"Sunday";"September";2006;7;38;9;"Q3";"";7
617;"1997-09-08 00:00:00";"Monday";"September";2006;8;38;9;"Q3";"";1
618;"1997-09-09 00:00:00";"Tuesday";"September";2006;9;38;9;"Q3";"";2
619;"1997-09-10 00:00:00";"Wednesday";"September";2006;10;38;9;"Q3";"";3
620;"1997-09-11 00:00:00";"Thursday";"September";2006;11;38;9;"Q3";"";4
621;"1997-09-12 00:00:00";"Friday";"September";2006;12;38;9;"Q3";"";5
622;"1997-09-13 00:00:00";"Saturday";"September";2006;13;38;9;"Q3";"";6
623;"1997-09-14 00:00:00";"Sunday";"September";2006;14;39;9;"Q3";"";7
624;"1997-09-15 00:00:00";"Monday";"September";2006;15;39;9;"Q3";"";1
625;"1997-09-16 00:00:00";"Tuesday";"September";2006;16;39;9;"Q3";"";2
626;"1997-09-17 00:00:00";"Wednesday";"September";2006;17;39;9;"Q3";"";3
627;"1997-09-18 00:00:00";"Thursday";"September";2006;18;39;9;"Q3";"";4
628;"1997-09-19 00:00:00";"Friday";"September";2006;19;39;9;"Q3";"";5
629;"1997-09-20 00:00:00";"Saturday";"September";2006;20;39;9;"Q3";"";6
630;"1997-09-21 00:00:00";"Sunday";"September";2006;21;40;9;"Q3";"";7
631;"1997-09-22 00:00:00";"Monday";"September";2006;22;40;9;"Q3";"";1
632;"1997-09-23 00:00:00";"Tuesday";"September";2006;23;40;9;"Q3";"";2
633;"1997-09-24 00:00:00";"Wednesday";"September";2006;24;40;9;"Q3";"";3
634;"1997-09-25 00:00:00";"Thursday";"September";2006;25;40;9;"Q3";"";4
635;"1997-09-26 00:00:00";"Friday";"September";2006;26;40;9;"Q3";"";5
636;"1997-09-27 00:00:00";"Saturday";"September";2006;27;40;9;"Q3";"";6
637;"1997-09-28 00:00:00";"Sunday";"September";2006;28;41;9;"Q3";"";7
638;"1997-09-29 00:00:00";"Monday";"September";2006;29;41;9;"Q3";"";1
639;"1997-09-30 00:00:00";"Tuesday";"September";2006;30;41;9;"Q3";"";2
640;"1997-10-01 00:00:00";"Wednesday";"October";2006;1;41;10;"Q4";"";3
641;"1997-10-02 00:00:00";"Thursday";"October";2006;2;41;10;"Q4";"";4
642;"1997-10-03 00:00:00";"Friday";"October";2006;3;41;10;"Q4";"";5
643;"1997-10-04 00:00:00";"Saturday";"October";2006;4;41;10;"Q4";"";6
644;"1997-10-05 00:00:00";"Sunday";"October";2006;5;42;10;"Q4";"";7
645;"1997-10-06 00:00:00";"Monday";"October";2006;6;42;10;"Q4";"";1
646;"1997-10-07 00:00:00";"Tuesday";"October";2006;7;42;10;"Q4";"";2
647;"1997-10-08 00:00:00";"Wednesday";"October";2006;8;42;10;"Q4";"";3
648;"1997-10-09 00:00:00";"Thursday";"October";2006;9;42;10;"Q4";"";4
649;"1997-10-10 00:00:00";"Friday";"October";2006;10;42;10;"Q4";"";5
650;"1997-10-11 00:00:00";"Saturday";"October";2006;11;42;10;"Q4";"";6
651;"1997-10-12 00:00:00";"Sunday";"October";2006;12;43;10;"Q4";"";7
652;"1997-10-13 00:00:00";"Monday";"October";2006;13;43;10;"Q4";"";1
653;"1997-10-14 00:00:00";"Tuesday";"October";2006;14;43;10;"Q4";"";2
654;"1997-10-15 00:00:00";"Wednesday";"October";2006;15;43;10;"Q4";"";3
655;"1997-10-16 00:00:00";"Thursday";"October";2006;16;43;10;"Q4";"";4
656;"1997-10-17 00:00:00";"Friday";"October";2006;17;43;10;"Q4";"";5
657;"1997-10-18 00:00:00";"Saturday";"October";2006;18;43;10;"Q4";"";6
658;"1997-10-19 00:00:00";"Sunday";"October";2006;19;44;10;"Q4";"";7
659;"1997-10-20 00:00:00";"Monday";"October";2006;20;44;10;"Q4";"";1
660;"1997-10-21 00:00:00";"Tuesday";"October";2006;21;44;10;"Q4";"";2
661;"1997-10-22 00:00:00";"Wednesday";"October";2006;22;44;10;"Q4";"";3
662;"1997-10-23 00:00:00";"Thursday";"October";2006;23;44;10;"Q4";"";4
663;"1997-10-24 00:00:00";"Friday";"October";2006;24;44;10;"Q4";"";5
664;"1997-10-25 00:00:00";"Saturday";"October";2006;25;44;10;"Q4";"";6
665;"1997-10-26 00:00:00";"Sunday";"October";2006;26;45;10;"Q4";"";7
666;"1997-10-27 00:00:00";"Monday";"October";2006;27;45;10;"Q4";"";1
667;"1997-10-28 00:00:00";"Tuesday";"October";2006;28;45;10;"Q4";"";2
668;"1997-10-29 00:00:00";"Wednesday";"October";2006;29;45;10;"Q4";"";3
669;"1997-10-30 00:00:00";"Thursday";"October";2006;30;45;10;"Q4";"";4
670;"1997-10-31 00:00:00";"Friday";"October";2006;31;45;10;"Q4";"";5
671;"1997-11-01 00:00:00";"Saturday";"November";2006;1;45;11;"Q4";"";6
672;"1997-11-02 00:00:00";"Sunday";"November";2006;2;46;11;"Q4";"";7
673;"1997-11-03 00:00:00";"Monday";"November";2006;3;46;11;"Q4";"";1
674;"1997-11-04 00:00:00";"Tuesday";"November";2006;4;46;11;"Q4";"";2
675;"1997-11-05 00:00:00";"Wednesday";"November";2006;5;46;11;"Q4";"";3
676;"1997-11-06 00:00:00";"Thursday";"November";2006;6;46;11;"Q4";"";4
677;"1997-11-07 00:00:00";"Friday";"November";2006;7;46;11;"Q4";"";5
678;"1997-11-08 00:00:00";"Saturday";"November";2006;8;46;11;"Q4";"";6
679;"1997-11-09 00:00:00";"Sunday";"November";2006;9;47;11;"Q4";"";7
680;"1997-11-10 00:00:00";"Monday";"November";2006;10;47;11;"Q4";"";1
681;"1997-11-11 00:00:00";"Tuesday";"November";2006;11;47;11;"Q4";"";2
682;"1997-11-12 00:00:00";"Wednesday";"November";2006;12;47;11;"Q4";"";3
683;"1997-11-13 00:00:00";"Thursday";"November";2006;13;47;11;"Q4";"";4
684;"1997-11-14 00:00:00";"Friday";"November";2006;14;47;11;"Q4";"";5
685;"1997-11-15 00:00:00";"Saturday";"November";2006;15;47;11;"Q4";"";6
686;"1997-11-16 00:00:00";"Sunday";"November";2006;16;48;11;"Q4";"";7
687;"1997-11-17 00:00:00";"Monday";"November";2006;17;48;11;"Q4";"";1
688;"1997-11-18 00:00:00";"Tuesday";"November";2006;18;48;11;"Q4";"";2
689;"1997-11-19 00:00:00";"Wednesday";"November";2006;19;48;11;"Q4";"";3
690;"1997-11-20 00:00:00";"Thursday";"November";2006;20;48;11;"Q4";"";4
691;"1997-11-21 00:00:00";"Friday";"November";2006;21;48;11;"Q4";"";5
692;"1997-11-22 00:00:00";"Saturday";"November";2006;22;48;11;"Q4";"";6
693;"1997-11-23 00:00:00";"Sunday";"November";2006;23;49;11;"Q4";"";7
694;"1997-11-24 00:00:00";"Monday";"November";2006;24;49;11;"Q4";"";1
695;"1997-11-25 00:00:00";"Tuesday";"November";2006;25;49;11;"Q4";"";2
696;"1997-11-26 00:00:00";"Wednesday";"November";2006;26;49;11;"Q4";"";3
697;"1997-11-27 00:00:00";"Thursday";"November";2006;27;49;11;"Q4";"";4
698;"1997-11-28 00:00:00";"Friday";"November";2006;28;49;11;"Q4";"";5
699;"1997-11-29 00:00:00";"Saturday";"November";2006;29;49;11;"Q4";"";6
700;"1997-11-30 00:00:00";"Sunday";"November";2006;30;50;11;"Q4";"";7
701;"1997-12-01 00:00:00";"Monday";"December";2006;1;50;12;"Q4";"";1
702;"1997-12-02 00:00:00";"Tuesday";"December";2006;2;50;12;"Q4";"";2
703;"1997-12-03 00:00:00";"Wednesday";"December";2006;3;50;12;"Q4";"";3
704;"1997-12-04 00:00:00";"Thursday";"December";2006;4;50;12;"Q4";"";4
705;"1997-12-05 00:00:00";"Friday";"December";2006;5;50;12;"Q4";"";5
706;"1997-12-06 00:00:00";"Saturday";"December";2006;6;50;12;"Q4";"";6
707;"1997-12-07 00:00:00";"Sunday";"December";2006;7;51;12;"Q4";"";7
708;"1997-12-08 00:00:00";"Monday";"December";2006;8;51;12;"Q4";"";1
709;"1997-12-09 00:00:00";"Tuesday";"December";2006;9;51;12;"Q4";"";2
710;"1997-12-10 00:00:00";"Wednesday";"December";2006;10;51;12;"Q4";"";3
711;"1997-12-11 00:00:00";"Thursday";"December";2006;11;51;12;"Q4";"";4
712;"1997-12-12 00:00:00";"Friday";"December";2006;12;51;12;"Q4";"";5
713;"1997-12-13 00:00:00";"Saturday";"December";2006;13;51;12;"Q4";"";6
714;"1997-12-14 00:00:00";"Sunday";"December";2006;14;52;12;"Q4";"";7
715;"1997-12-15 00:00:00";"Monday";"December";2006;15;1;12;"Q4";"";1
716;"1997-12-16 00:00:00";"Tuesday";"December";2006;16;1;12;"Q4";"";2
717;"1997-12-17 00:00:00";"Wednesday";"December";2006;17;1;12;"Q4";"";3
718;"1997-12-18 00:00:00";"Thursday";"December";2006;18;1;12;"Q4";"";4
719;"1997-12-19 00:00:00";"Friday";"December";2006;19;1;12;"Q4";"";5
720;"1997-12-20 00:00:00";"Saturday";"December";2006;20;1;12;"Q4";"";6
721;"1997-12-21 00:00:00";"Sunday";"December";2006;21;2;12;"Q4";"";7
722;"1997-12-22 00:00:00";"Monday";"December";2006;22;2;12;"Q4";"";1
723;"1997-12-23 00:00:00";"Tuesday";"December";2006;23;2;12;"Q4";"";2
724;"1997-12-24 00:00:00";"Wednesday";"December";2006;24;2;12;"Q4";"";3
725;"1997-12-25 00:00:00";"Thursday";"December";2006;25;2;12;"Q4";"";4
726;"1997-12-26 00:00:00";"Friday";"December";2006;26;2;12;"Q4";"";5
727;"1997-12-27 00:00:00";"Saturday";"December";2006;27;2;12;"Q4";"";6
728;"1997-12-28 00:00:00";"Sunday";"December";2006;28;3;12;"Q4";"";7
729;"1997-12-29 00:00:00";"Monday";"December";2006;29;3;12;"Q4";"";1
730;"1997-12-30 00:00:00";"Tuesday";"December";2006;30;3;12;"Q4";"";2
731;"1997-12-31 00:00:00";"Wednesday";"December";2006;31;3;12;"Q4";"";3
732;"1998-01-01 00:00:00";"Thursday";"January";2007;1;3;1;"Q1";"";4
733;"1998-01-02 00:00:00";"Friday";"January";2007;2;3;1;"Q1";"";5
734;"1998-01-03 00:00:00";"Saturday";"January";2007;3;3;1;"Q1";"";6
735;"1998-01-04 00:00:00";"Sunday";"January";2007;4;4;1;"Q1";"";7
736;"1998-01-05 00:00:00";"Monday";"January";2007;5;4;1;"Q1";"";1
737;"1998-01-06 00:00:00";"Tuesday";"January";2007;6;4;1;"Q1";"";2
738;"1998-01-07 00:00:00";"Wednesday";"January";2007;7;4;1;"Q1";"";3
739;"1998-01-08 00:00:00";"Thursday";"January";2007;8;4;1;"Q1";"";4
740;"1998-01-09 00:00:00";"Friday";"January";2007;9;4;1;"Q1";"";5
741;"1998-01-10 00:00:00";"Saturday";"January";2007;10;4;1;"Q1";"";6
742;"1998-01-11 00:00:00";"Sunday";"January";2007;11;5;1;"Q1";"";7
743;"1998-01-12 00:00:00";"Monday";"January";2007;12;5;1;"Q1";"";1
744;"1998-01-13 00:00:00";"Tuesday";"January";2007;13;5;1;"Q1";"";2
745;"1998-01-14 00:00:00";"Wednesday";"January";2007;14;5;1;"Q1";"";3
746;"1998-01-15 00:00:00";"Thursday";"January";2007;15;5;1;"Q1";"";4
747;"1998-01-16 00:00:00";"Friday";"January";2007;16;5;1;"Q1";"";5
748;"1998-01-17 00:00:00";"Saturday";"January";2007;17;5;1;"Q1";"";6
749;"1998-01-18 00:00:00";"Sunday";"January";2007;18;6;1;"Q1";"";7
750;"1998-01-19 00:00:00";"Monday";"January";2007;19;6;1;"Q1";"";1
751;"1998-01-20 00:00:00";"Tuesday";"January";2007;20;6;1;"Q1";"";2
752;"1998-01-21 00:00:00";"Wednesday";"January";2007;21;6;1;"Q1";"";3
753;"1998-01-22 00:00:00";"Thursday";"January";2007;22;6;1;"Q1";"";4
754;"1998-01-23 00:00:00";"Friday";"January";2007;23;6;1;"Q1";"";5
755;"1998-01-24 00:00:00";"Saturday";"January";2007;24;6;1;"Q1";"";6
756;"1998-01-25 00:00:00";"Sunday";"January";2007;25;7;1;"Q1";"";7
757;"1998-01-26 00:00:00";"Monday";"January";2007;26;7;1;"Q1";"";1
758;"1998-01-27 00:00:00";"Tuesday";"January";2007;27;7;1;"Q1";"";2
759;"1998-01-28 00:00:00";"Wednesday";"January";2007;28;7;1;"Q1";"";3
760;"1998-01-29 00:00:00";"Thursday";"January";2007;29;7;1;"Q1";"";4
761;"1998-01-30 00:00:00";"Friday";"January";2007;30;7;1;"Q1";"";5
762;"1998-01-31 00:00:00";"Saturday";"January";2007;31;7;1;"Q1";"";6
763;"1998-02-01 00:00:00";"Sunday";"February";2007;1;8;2;"Q1";"";7
764;"1998-02-02 00:00:00";"Monday";"February";2007;2;8;2;"Q1";"";1
765;"1998-02-03 00:00:00";"Tuesday";"February";2007;3;8;2;"Q1";"";2
766;"1998-02-04 00:00:00";"Wednesday";"February";2007;4;8;2;"Q1";"";3
767;"1998-02-05 00:00:00";"Thursday";"February";2007;5;8;2;"Q1";"";4
768;"1998-02-06 00:00:00";"Friday";"February";2007;6;8;2;"Q1";"";5
769;"1998-02-07 00:00:00";"Saturday";"February";2007;7;8;2;"Q1";"";6
770;"1998-02-08 00:00:00";"Sunday";"February";2007;8;9;2;"Q1";"";7
771;"1998-02-09 00:00:00";"Monday";"February";2007;9;9;2;"Q1";"";1
772;"1998-02-10 00:00:00";"Tuesday";"February";2007;10;9;2;"Q1";"";2
773;"1998-02-11 00:00:00";"Wednesday";"February";2007;11;9;2;"Q1";"";3
774;"1998-02-12 00:00:00";"Thursday";"February";2007;12;9;2;"Q1";"";4
775;"1998-02-13 00:00:00";"Friday";"February";2007;13;9;2;"Q1";"";5
776;"1998-02-14 00:00:00";"Saturday";"February";2007;14;9;2;"Q1";"";6
777;"1998-02-15 00:00:00";"Sunday";"February";2007;15;10;2;"Q1";"";7
778;"1998-02-16 00:00:00";"Monday";"February";2007;16;10;2;"Q1";"";1
779;"1998-02-17 00:00:00";"Tuesday";"February";2007;17;10;2;"Q1";"";2
780;"1998-02-18 00:00:00";"Wednesday";"February";2007;18;10;2;"Q1";"";3
781;"1998-02-19 00:00:00";"Thursday";"February";2007;19;10;2;"Q1";"";4
782;"1998-02-20 00:00:00";"Friday";"February";2007;20;10;2;"Q1";"";5
783;"1998-02-21 00:00:00";"Saturday";"February";2007;21;10;2;"Q1";"";6
784;"1998-02-22 00:00:00";"Sunday";"February";2007;22;11;2;"Q1";"";7
785;"1998-02-23 00:00:00";"Monday";"February";2007;23;11;2;"Q1";"";1
786;"1998-02-24 00:00:00";"Tuesday";"February";2007;24;11;2;"Q1";"";2
787;"1998-02-25 00:00:00";"Wednesday";"February";2007;25;11;2;"Q1";"";3
788;"1998-02-26 00:00:00";"Thursday";"February";2007;26;11;2;"Q1";"";4
789;"1998-02-27 00:00:00";"Friday";"February";2007;27;11;2;"Q1";"";5
790;"1998-02-28 00:00:00";"Saturday";"February";2007;28;11;2;"Q1";"";6
791;"1998-03-01 00:00:00";"Sunday";"March";2007;1;12;3;"Q1";"";7
792;"1998-03-02 00:00:00";"Monday";"March";2007;2;12;3;"Q1";"";1
793;"1998-03-03 00:00:00";"Tuesday";"March";2007;3;12;3;"Q1";"";2
794;"1998-03-04 00:00:00";"Wednesday";"March";2007;4;12;3;"Q1";"";3
795;"1998-03-05 00:00:00";"Thursday";"March";2007;5;12;3;"Q1";"";4
796;"1998-03-06 00:00:00";"Friday";"March";2007;6;12;3;"Q1";"";5
797;"1998-03-07 00:00:00";"Saturday";"March";2007;7;12;3;"Q1";"";6
798;"1998-03-08 00:00:00";"Sunday";"March";2007;8;13;3;"Q1";"";7
799;"1998-03-09 00:00:00";"Monday";"March";2007;9;13;3;"Q1";"";1
800;"1998-03-10 00:00:00";"Tuesday";"March";2007;10;13;3;"Q1";"";2
801;"1998-03-11 00:00:00";"Wednesday";"March";2007;11;13;3;"Q1";"";3
802;"1998-03-12 00:00:00";"Thursday";"March";2007;12;13;3;"Q1";"";4
803;"1998-03-13 00:00:00";"Friday";"March";2007;13;13;3;"Q1";"";5
804;"1998-03-14 00:00:00";"Saturday";"March";2007;14;13;3;"Q1";"";6
805;"1998-03-15 00:00:00";"Sunday";"March";2007;15;14;3;"Q1";"";7
806;"1998-03-16 00:00:00";"Monday";"March";2007;16;14;3;"Q1";"";1
807;"1998-03-17 00:00:00";"Tuesday";"March";2007;17;14;3;"Q1";"";2
808;"1998-03-18 00:00:00";"Wednesday";"March";2007;18;14;3;"Q1";"";3
809;"1998-03-19 00:00:00";"Thursday";"March";2007;19;14;3;"Q1";"";4
810;"1998-03-20 00:00:00";"Friday";"March";2007;20;14;3;"Q1";"";5
811;"1998-03-21 00:00:00";"Saturday";"March";2007;21;14;3;"Q1";"";6
812;"1998-03-22 00:00:00";"Sunday";"March";2007;22;15;3;"Q1";"";7
813;"1998-03-23 00:00:00";"Monday";"March";2007;23;15;3;"Q1";"";1
814;"1998-03-24 00:00:00";"Tuesday";"March";2007;24;15;3;"Q1";"";2
815;"1998-03-25 00:00:00";"Wednesday";"March";2007;25;15;3;"Q1";"";3
816;"1998-03-26 00:00:00";"Thursday";"March";2007;26;15;3;"Q1";"";4
817;"1998-03-27 00:00:00";"Friday";"March";2007;27;15;3;"Q1";"";5
818;"1998-03-28 00:00:00";"Saturday";"March";2007;28;15;3;"Q1";"";6
819;"1998-03-29 00:00:00";"Sunday";"March";2007;29;16;3;"Q1";"";7
820;"1998-03-30 00:00:00";"Monday";"March";2007;30;16;3;"Q1";"";1
821;"1998-03-31 00:00:00";"Tuesday";"March";2007;31;16;3;"Q1";"";2
822;"1998-04-01 00:00:00";"Wednesday";"April";2007;1;16;4;"Q2";"";3
823;"1998-04-02 00:00:00";"Thursday";"April";2007;2;16;4;"Q2";"";4
824;"1998-04-03 00:00:00";"Friday";"April";2007;3;16;4;"Q2";"";5
825;"1998-04-04 00:00:00";"Saturday";"April";2007;4;16;4;"Q2";"";6
826;"1998-04-05 00:00:00";"Sunday";"April";2007;5;17;4;"Q2";"";7
827;"1998-04-06 00:00:00";"Monday";"April";2007;6;17;4;"Q2";"";1
828;"1998-04-07 00:00:00";"Tuesday";"April";2007;7;17;4;"Q2";"";2
829;"1998-04-08 00:00:00";"Wednesday";"April";2007;8;17;4;"Q2";"";3
830;"1998-04-09 00:00:00";"Thursday";"April";2007;9;17;4;"Q2";"";4
831;"1998-04-10 00:00:00";"Friday";"April";2007;10;17;4;"Q2";"";5
832;"1998-04-11 00:00:00";"Saturday";"April";2007;11;17;4;"Q2";"";6
833;"1998-04-12 00:00:00";"Sunday";"April";2007;12;18;4;"Q2";"";7
834;"1998-04-13 00:00:00";"Monday";"April";2007;13;18;4;"Q2";"";1
835;"1998-04-14 00:00:00";"Tuesday";"April";2007;14;18;4;"Q2";"";2
836;"1998-04-15 00:00:00";"Wednesday";"April";2007;15;18;4;"Q2";"";3
837;"1998-04-16 00:00:00";"Thursday";"April";2007;16;18;4;"Q2";"";4
838;"1998-04-17 00:00:00";"Friday";"April";2007;17;18;4;"Q2";"";5
839;"1998-04-18 00:00:00";"Saturday";"April";2007;18;18;4;"Q2";"";6
840;"1998-04-19 00:00:00";"Sunday";"April";2007;19;19;4;"Q2";"";7
841;"1998-04-20 00:00:00";"Monday";"April";2007;20;19;4;"Q2";"";1
842;"1998-04-21 00:00:00";"Tuesday";"April";2007;21;19;4;"Q2";"";2
843;"1998-04-22 00:00:00";"Wednesday";"April";2007;22;19;4;"Q2";"";3
844;"1998-04-23 00:00:00";"Thursday";"April";2007;23;19;4;"Q2";"";4
845;"1998-04-24 00:00:00";"Friday";"April";2007;24;19;4;"Q2";"";5
846;"1998-04-25 00:00:00";"Saturday";"April";2007;25;19;4;"Q2";"";6
847;"1998-04-26 00:00:00";"Sunday";"April";2007;26;20;4;"Q2";"";7
848;"1998-04-27 00:00:00";"Monday";"April";2007;27;20;4;"Q2";"";1
849;"1998-04-28 00:00:00";"Tuesday";"April";2007;28;20;4;"Q2";"";2
850;"1998-04-29 00:00:00";"Wednesday";"April";2007;29;20;4;"Q2";"";3
851;"1998-04-30 00:00:00";"Thursday";"April";2007;30;20;4;"Q2";"";4
852;"1998-05-01 00:00:00";"Friday";"May";2007;1;20;5;"Q2";"";5
853;"1998-05-02 00:00:00";"Saturday";"May";2007;2;20;5;"Q2";"";6
854;"1998-05-03 00:00:00";"Sunday";"May";2007;3;21;5;"Q2";"";7
855;"1998-05-04 00:00:00";"Monday";"May";2007;4;21;5;"Q2";"";1
856;"1998-05-05 00:00:00";"Tuesday";"May";2007;5;21;5;"Q2";"";2
857;"1998-05-06 00:00:00";"Wednesday";"May";2007;6;21;5;"Q2";"";3
858;"1998-05-07 00:00:00";"Thursday";"May";2007;7;21;5;"Q2";"";4
859;"1998-05-08 00:00:00";"Friday";"May";2007;8;21;5;"Q2";"";5
860;"1998-05-09 00:00:00";"Saturday";"May";2007;9;21;5;"Q2";"";6
861;"1998-05-10 00:00:00";"Sunday";"May";2007;10;22;5;"Q2";"";7
862;"1998-05-11 00:00:00";"Monday";"May";2007;11;22;5;"Q2";"";1
863;"1998-05-12 00:00:00";"Tuesday";"May";2007;12;22;5;"Q2";"";2
864;"1998-05-13 00:00:00";"Wednesday";"May";2007;13;22;5;"Q2";"";3
865;"1998-05-14 00:00:00";"Thursday";"May";2007;14;22;5;"Q2";"";4
866;"1998-05-15 00:00:00";"Friday";"May";2007;15;22;5;"Q2";"";5
867;"1998-05-16 00:00:00";"Saturday";"May";2007;16;22;5;"Q2";"";6
868;"1998-05-17 00:00:00";"Sunday";"May";2007;17;23;5;"Q2";"";7
869;"1998-05-18 00:00:00";"Monday";"May";2007;18;23;5;"Q2";"";1
870;"1998-05-19 00:00:00";"Tuesday";"May";2007;19;23;5;"Q2";"";2
871;"1998-05-20 00:00:00";"Wednesday";"May";2007;20;23;5;"Q2";"";3
872;"1998-05-21 00:00:00";"Thursday";"May";2007;21;23;5;"Q2";"";4
873;"1998-05-22 00:00:00";"Friday";"May";2007;22;23;5;"Q2";"";5
874;"1998-05-23 00:00:00";"Saturday";"May";2007;23;23;5;"Q2";"";6
875;"1998-05-24 00:00:00";"Sunday";"May";2007;24;24;5;"Q2";"";7
876;"1998-05-25 00:00:00";"Monday";"May";2007;25;24;5;"Q2";"";1
877;"1998-05-26 00:00:00";"Tuesday";"May";2007;26;24;5;"Q2";"";2
878;"1998-05-27 00:00:00";"Wednesday";"May";2007;27;24;5;"Q2";"";3
879;"1998-05-28 00:00:00";"Thursday";"May";2007;28;24;5;"Q2";"";4
880;"1998-05-29 00:00:00";"Friday";"May";2007;29;24;5;"Q2";"";5
881;"1998-05-30 00:00:00";"Saturday";"May";2007;30;24;5;"Q2";"";6
882;"1998-05-31 00:00:00";"Sunday";"May";2007;31;25;5;"Q2";"";7
883;"1998-06-01 00:00:00";"Monday";"June";2007;1;25;6;"Q2";"";1
884;"1998-06-02 00:00:00";"Tuesday";"June";2007;2;25;6;"Q2";"";2
885;"1998-06-03 00:00:00";"Wednesday";"June";2007;3;25;6;"Q2";"";3
886;"1998-06-04 00:00:00";"Thursday";"June";2007;4;25;6;"Q2";"";4
887;"1998-06-05 00:00:00";"Friday";"June";2007;5;25;6;"Q2";"";5
888;"1998-06-06 00:00:00";"Saturday";"June";2007;6;25;6;"Q2";"";6
889;"1998-06-07 00:00:00";"Sunday";"June";2007;7;26;6;"Q2";"";7
890;"1998-06-08 00:00:00";"Monday";"June";2007;8;26;6;"Q2";"";1
891;"1998-06-09 00:00:00";"Tuesday";"June";2007;9;26;6;"Q2";"";2
892;"1998-06-10 00:00:00";"Wednesday";"June";2007;10;26;6;"Q2";"";3
893;"1998-06-11 00:00:00";"Thursday";"June";2007;11;26;6;"Q2";"";4
894;"1998-06-12 00:00:00";"Friday";"June";2007;12;26;6;"Q2";"";5
895;"1998-06-13 00:00:00";"Saturday";"June";2007;13;26;6;"Q2";"";6
896;"1998-06-14 00:00:00";"Sunday";"June";2007;14;27;6;"Q2";"";7
897;"1998-06-15 00:00:00";"Monday";"June";2007;15;27;6;"Q2";"";1
898;"1998-06-16 00:00:00";"Tuesday";"June";2007;16;27;6;"Q2";"";2
899;"1998-06-17 00:00:00";"Wednesday";"June";2007;17;27;6;"Q2";"";3
900;"1998-06-18 00:00:00";"Thursday";"June";2007;18;27;6;"Q2";"";4
901;"1998-06-19 00:00:00";"Friday";"June";2007;19;27;6;"Q2";"";5
902;"1998-06-20 00:00:00";"Saturday";"June";2007;20;27;6;"Q2";"";6
903;"1998-06-21 00:00:00";"Sunday";"June";2007;21;28;6;"Q2";"";7
904;"1998-06-22 00:00:00";"Monday";"June";2007;22;28;6;"Q2";"";1
905;"1998-06-23 00:00:00";"Tuesday";"June";2007;23;28;6;"Q2";"";2
906;"1998-06-24 00:00:00";"Wednesday";"June";2007;24;28;6;"Q2";"";3
907;"1998-06-25 00:00:00";"Thursday";"June";2007;25;28;6;"Q2";"";4
908;"1998-06-26 00:00:00";"Friday";"June";2007;26;28;6;"Q2";"";5
909;"1998-06-27 00:00:00";"Saturday";"June";2007;27;28;6;"Q2";"";6
910;"1998-06-28 00:00:00";"Sunday";"June";2007;28;29;6;"Q2";"";7
911;"1998-06-29 00:00:00";"Monday";"June";2007;29;29;6;"Q2";"";1
912;"1998-06-30 00:00:00";"Tuesday";"June";2007;30;29;6;"Q2";"";2
913;"1998-07-01 00:00:00";"Wednesday";"July";2007;1;29;7;"Q3";"";3
914;"1998-07-02 00:00:00";"Thursday";"July";2007;2;29;7;"Q3";"";4
915;"1998-07-03 00:00:00";"Friday";"July";2007;3;29;7;"Q3";"";5
916;"1998-07-04 00:00:00";"Saturday";"July";2007;4;29;7;"Q3";"";6
917;"1998-07-05 00:00:00";"Sunday";"July";2007;5;30;7;"Q3";"";7
918;"1998-07-06 00:00:00";"Monday";"July";2007;6;30;7;"Q3";"";1
919;"1998-07-07 00:00:00";"Tuesday";"July";2007;7;30;7;"Q3";"";2
920;"1998-07-08 00:00:00";"Wednesday";"July";2007;8;30;7;"Q3";"";3
921;"1998-07-09 00:00:00";"Thursday";"July";2007;9;30;7;"Q3";"";4
922;"1998-07-10 00:00:00";"Friday";"July";2007;10;30;7;"Q3";"";5
923;"1998-07-11 00:00:00";"Saturday";"July";2007;11;30;7;"Q3";"";6
924;"1998-07-12 00:00:00";"Sunday";"July";2007;12;31;7;"Q3";"";7
925;"1998-07-13 00:00:00";"Monday";"July";2007;13;31;7;"Q3";"";1
926;"1998-07-14 00:00:00";"Tuesday";"July";2007;14;31;7;"Q3";"";2
927;"1998-07-15 00:00:00";"Wednesday";"July";2007;15;31;7;"Q3";"";3
928;"1998-07-16 00:00:00";"Thursday";"July";2007;16;31;7;"Q3";"";4
929;"1998-07-17 00:00:00";"Friday";"July";2007;17;31;7;"Q3";"";5
930;"1998-07-18 00:00:00";"Saturday";"July";2007;18;31;7;"Q3";"";6
931;"1998-07-19 00:00:00";"Sunday";"July";2007;19;32;7;"Q3";"";7
932;"1998-07-20 00:00:00";"Monday";"July";2007;20;32;7;"Q3";"";1
933;"1998-07-21 00:00:00";"Tuesday";"July";2007;21;32;7;"Q3";"";2
934;"1998-07-22 00:00:00";"Wednesday";"July";2007;22;32;7;"Q3";"";3
935;"1998-07-23 00:00:00";"Thursday";"July";2007;23;32;7;"Q3";"";4
936;"1998-07-24 00:00:00";"Friday";"July";2007;24;32;7;"Q3";"";5
937;"1998-07-25 00:00:00";"Saturday";"July";2007;25;32;7;"Q3";"";6
938;"1998-07-26 00:00:00";"Sunday";"July";2007;26;33;7;"Q3";"";7
939;"1998-07-27 00:00:00";"Monday";"July";2007;27;33;7;"Q3";"";1
940;"1998-07-28 00:00:00";"Tuesday";"July";2007;28;33;7;"Q3";"";2
941;"1998-07-29 00:00:00";"Wednesday";"July";2007;29;33;7;"Q3";"";3
942;"1998-07-30 00:00:00";"Thursday";"July";2007;30;33;7;"Q3";"";4
943;"1998-07-31 00:00:00";"Friday";"July";2007;31;33;7;"Q3";"";5
944;"1998-08-01 00:00:00";"Saturday";"August";2007;1;33;8;"Q3";"";6
945;"1998-08-02 00:00:00";"Sunday";"August";2007;2;34;8;"Q3";"";7
946;"1998-08-03 00:00:00";"Monday";"August";2007;3;34;8;"Q3";"";1
947;"1998-08-04 00:00:00";"Tuesday";"August";2007;4;34;8;"Q3";"";2
948;"1998-08-05 00:00:00";"Wednesday";"August";2007;5;34;8;"Q3";"";3
949;"1998-08-06 00:00:00";"Thursday";"August";2007;6;34;8;"Q3";"";4
950;"1998-08-07 00:00:00";"Friday";"August";2007;7;34;8;"Q3";"";5
951;"1998-08-08 00:00:00";"Saturday";"August";2007;8;34;8;"Q3";"";6
952;"1998-08-09 00:00:00";"Sunday";"August";2007;9;35;8;"Q3";"";7
953;"1998-08-10 00:00:00";"Monday";"August";2007;10;35;8;"Q3";"";1
954;"1998-08-11 00:00:00";"Tuesday";"August";2007;11;35;8;"Q3";"";2
955;"1998-08-12 00:00:00";"Wednesday";"August";2007;12;35;8;"Q3";"";3
956;"1998-08-13 00:00:00";"Thursday";"August";2007;13;35;8;"Q3";"";4
957;"1998-08-14 00:00:00";"Friday";"August";2007;14;35;8;"Q3";"";5
958;"1998-08-15 00:00:00";"Saturday";"August";2007;15;35;8;"Q3";"";6
959;"1998-08-16 00:00:00";"Sunday";"August";2007;16;36;8;"Q3";"";7
960;"1998-08-17 00:00:00";"Monday";"August";2007;17;36;8;"Q3";"";1
961;"1998-08-18 00:00:00";"Tuesday";"August";2007;18;36;8;"Q3";"";2
962;"1998-08-19 00:00:00";"Wednesday";"August";2007;19;36;8;"Q3";"";3
963;"1998-08-20 00:00:00";"Thursday";"August";2007;20;36;8;"Q3";"";4
964;"1998-08-21 00:00:00";"Friday";"August";2007;21;36;8;"Q3";"";5
965;"1998-08-22 00:00:00";"Saturday";"August";2007;22;36;8;"Q3";"";6
966;"1998-08-23 00:00:00";"Sunday";"August";2007;23;37;8;"Q3";"";7
967;"1998-08-24 00:00:00";"Monday";"August";2007;24;37;8;"Q3";"";1
968;"1998-08-25 00:00:00";"Tuesday";"August";2007;25;37;8;"Q3";"";2
969;"1998-08-26 00:00:00";"Wednesday";"August";2007;26;37;8;"Q3";"";3
970;"1998-08-27 00:00:00";"Thursday";"August";2007;27;37;8;"Q3";"";4
971;"1998-08-28 00:00:00";"Friday";"August";2007;28;37;8;"Q3";"";5
972;"1998-08-29 00:00:00";"Saturday";"August";2007;29;37;8;"Q3";"";6
973;"1998-08-30 00:00:00";"Sunday";"August";2007;30;38;8;"Q3";"";7
974;"1998-08-31 00:00:00";"Monday";"August";2007;31;38;8;"Q3";"";1
975;"1998-09-01 00:00:00";"Tuesday";"September";2007;1;38;9;"Q3";"";2
976;"1998-09-02 00:00:00";"Wednesday";"September";2007;2;38;9;"Q3";"";3
977;"1998-09-03 00:00:00";"Thursday";"September";2007;3;38;9;"Q3";"";4
978;"1998-09-04 00:00:00";"Friday";"September";2007;4;38;9;"Q3";"";5
979;"1998-09-05 00:00:00";"Saturday";"September";2007;5;38;9;"Q3";"";6
980;"1998-09-06 00:00:00";"Sunday";"September";2007;6;39;9;"Q3";"";7
981;"1998-09-07 00:00:00";"Monday";"September";2007;7;39;9;"Q3";"";1
982;"1998-09-08 00:00:00";"Tuesday";"September";2007;8;39;9;"Q3";"";2
983;"1998-09-09 00:00:00";"Wednesday";"September";2007;9;39;9;"Q3";"";3
984;"1998-09-10 00:00:00";"Thursday";"September";2007;10;39;9;"Q3";"";4
985;"1998-09-11 00:00:00";"Friday";"September";2007;11;39;9;"Q3";"";5
986;"1998-09-12 00:00:00";"Saturday";"September";2007;12;39;9;"Q3";"";6
987;"1998-09-13 00:00:00";"Sunday";"September";2007;13;40;9;"Q3";"";7
988;"1998-09-14 00:00:00";"Monday";"September";2007;14;40;9;"Q3";"";1
989;"1998-09-15 00:00:00";"Tuesday";"September";2007;15;40;9;"Q3";"";2
990;"1998-09-16 00:00:00";"Wednesday";"September";2007;16;40;9;"Q3";"";3
991;"1998-09-17 00:00:00";"Thursday";"September";2007;17;40;9;"Q3";"";4
992;"1998-09-18 00:00:00";"Friday";"September";2007;18;40;9;"Q3";"";5
993;"1998-09-19 00:00:00";"Saturday";"September";2007;19;40;9;"Q3";"";6
994;"1998-09-20 00:00:00";"Sunday";"September";2007;20;41;9;"Q3";"";7
995;"1998-09-21 00:00:00";"Monday";"September";2007;21;41;9;"Q3";"";1
996;"1998-09-22 00:00:00";"Tuesday";"September";2007;22;41;9;"Q3";"";2
997;"1998-09-23 00:00:00";"Wednesday";"September";2007;23;41;9;"Q3";"";3
998;"1998-09-24 00:00:00";"Thursday";"September";2007;24;41;9;"Q3";"";4
999;"1998-09-25 00:00:00";"Friday";"September";2007;25;41;9;"Q3";"";5
1000;"1998-09-26 00:00:00";"Saturday";"September";2007;26;41;9;"Q3";"";6
1001;"1998-09-27 00:00:00";"Sunday";"September";2007;27;42;9;"Q3";"";7
1002;"1998-09-28 00:00:00";"Monday";"September";2007;28;42;9;"Q3";"";1
1003;"1998-09-29 00:00:00";"Tuesday";"September";2007;29;42;9;"Q3";"";2
1004;"1998-09-30 00:00:00";"Wednesday";"September";2007;30;42;9;"Q3";"";3
1005;"1998-10-01 00:00:00";"Thursday";"October";2007;1;42;10;"Q4";"";4
1006;"1998-10-02 00:00:00";"Friday";"October";2007;2;42;10;"Q4";"";5
1007;"1998-10-03 00:00:00";"Saturday";"October";2007;3;42;10;"Q4";"";6
1008;"1998-10-04 00:00:00";"Sunday";"October";2007;4;43;10;"Q4";"";7
1009;"1998-10-05 00:00:00";"Monday";"October";2007;5;43;10;"Q4";"";1
1010;"1998-10-06 00:00:00";"Tuesday";"October";2007;6;43;10;"Q4";"";2
1011;"1998-10-07 00:00:00";"Wednesday";"October";2007;7;43;10;"Q4";"";3
1012;"1998-10-08 00:00:00";"Thursday";"October";2007;8;43;10;"Q4";"";4
1013;"1998-10-09 00:00:00";"Friday";"October";2007;9;43;10;"Q4";"";5
1014;"1998-10-10 00:00:00";"Saturday";"October";2007;10;43;10;"Q4";"";6
1015;"1998-10-11 00:00:00";"Sunday";"October";2007;11;44;10;"Q4";"";7
1016;"1998-10-12 00:00:00";"Monday";"October";2007;12;44;10;"Q4";"";1
1017;"1998-10-13 00:00:00";"Tuesday";"October";2007;13;44;10;"Q4";"";2
1018;"1998-10-14 00:00:00";"Wednesday";"October";2007;14;44;10;"Q4";"";3
1019;"1998-10-15 00:00:00";"Thursday";"October";2007;15;44;10;"Q4";"";4
1020;"1998-10-16 00:00:00";"Friday";"October";2007;16;44;10;"Q4";"";5
1021;"1998-10-17 00:00:00";"Saturday";"October";2007;17;44;10;"Q4";"";6
1022;"1998-10-18 00:00:00";"Sunday";"October";2007;18;45;10;"Q4";"";7
1023;"1998-10-19 00:00:00";"Monday";"October";2007;19;45;10;"Q4";"";1
1024;"1998-10-20 00:00:00";"Tuesday";"October";2007;20;45;10;"Q4";"";2
1025;"1998-10-21 00:00:00";"Wednesday";"October";2007;21;45;10;"Q4";"";3
1026;"1998-10-22 00:00:00";"Thursday";"October";2007;22;45;10;"Q4";"";4
1027;"1998-10-23 00:00:00";"Friday";"October";2007;23;45;10;"Q4";"";5
1028;"1998-10-24 00:00:00";"Saturday";"October";2007;24;45;10;"Q4";"";6
1029;"1998-10-25 00:00:00";"Sunday";"October";2007;25;46;10;"Q4";"";7
1030;"1998-10-26 00:00:00";"Monday";"October";2007;26;46;10;"Q4";"";1
1031;"1998-10-27 00:00:00";"Tuesday";"October";2007;27;46;10;"Q4";"";2
1032;"1998-10-28 00:00:00";"Wednesday";"October";2007;28;46;10;"Q4";"";3
1033;"1998-10-29 00:00:00";"Thursday";"October";2007;29;46;10;"Q4";"";4
1034;"1998-10-30 00:00:00";"Friday";"October";2007;30;46;10;"Q4";"";5
1035;"1998-10-31 00:00:00";"Saturday";"October";2007;31;46;10;"Q4";"";6
1036;"1998-11-01 00:00:00";"Sunday";"November";2007;1;47;11;"Q4";"";7
1037;"1998-11-02 00:00:00";"Monday";"November";2007;2;47;11;"Q4";"";1
1038;"1998-11-03 00:00:00";"Tuesday";"November";2007;3;47;11;"Q4";"";2
1039;"1998-11-04 00:00:00";"Wednesday";"November";2007;4;47;11;"Q4";"";3
1040;"1998-11-05 00:00:00";"Thursday";"November";2007;5;47;11;"Q4";"";4
1041;"1998-11-06 00:00:00";"Friday";"November";2007;6;47;11;"Q4";"";5
1042;"1998-11-07 00:00:00";"Saturday";"November";2007;7;47;11;"Q4";"";6
1043;"1998-11-08 00:00:00";"Sunday";"November";2007;8;48;11;"Q4";"";7
1044;"1998-11-09 00:00:00";"Monday";"November";2007;9;48;11;"Q4";"";1
1045;"1998-11-10 00:00:00";"Tuesday";"November";2007;10;48;11;"Q4";"";2
1046;"1998-11-11 00:00:00";"Wednesday";"November";2007;11;48;11;"Q4";"";3
1047;"1998-11-12 00:00:00";"Thursday";"November";2007;12;48;11;"Q4";"";4
1048;"1998-11-13 00:00:00";"Friday";"November";2007;13;48;11;"Q4";"";5
1049;"1998-11-14 00:00:00";"Saturday";"November";2007;14;48;11;"Q4";"";6
1050;"1998-11-15 00:00:00";"Sunday";"November";2007;15;49;11;"Q4";"";7
1051;"1998-11-16 00:00:00";"Monday";"November";2007;16;49;11;"Q4";"";1
1052;"1998-11-17 00:00:00";"Tuesday";"November";2007;17;49;11;"Q4";"";2
1053;"1998-11-18 00:00:00";"Wednesday";"November";2007;18;49;11;"Q4";"";3
1054;"1998-11-19 00:00:00";"Thursday";"November";2007;19;49;11;"Q4";"";4
1055;"1998-11-20 00:00:00";"Friday";"November";2007;20;49;11;"Q4";"";5
1056;"1998-11-21 00:00:00";"Saturday";"November";2007;21;49;11;"Q4";"";6
1057;"1998-11-22 00:00:00";"Sunday";"November";2007;22;50;11;"Q4";"";7
1058;"1998-11-23 00:00:00";"Monday";"November";2007;23;50;11;"Q4";"";1
1059;"1998-11-24 00:00:00";"Tuesday";"November";2007;24;50;11;"Q4";"";2
1060;"1998-11-25 00:00:00";"Wednesday";"November";2007;25;50;11;"Q4";"";3
1061;"1998-11-26 00:00:00";"Thursday";"November";2007;26;50;11;"Q4";"";4
1062;"1998-11-27 00:00:00";"Friday";"November";2007;27;50;11;"Q4";"";5
1063;"1998-11-28 00:00:00";"Saturday";"November";2007;28;50;11;"Q4";"";6
1064;"1998-11-29 00:00:00";"Sunday";"November";2007;29;51;11;"Q4";"";7
1065;"1998-11-30 00:00:00";"Monday";"November";2007;30;51;11;"Q4";"";1
1066;"1998-12-01 00:00:00";"Tuesday";"December";2007;1;51;12;"Q4";"";2
1067;"1998-12-02 00:00:00";"Wednesday";"December";2007;2;51;12;"Q4";"";3
1068;"1998-12-03 00:00:00";"Thursday";"December";2007;3;51;12;"Q4";"";4
1069;"1998-12-04 00:00:00";"Friday";"December";2007;4;51;12;"Q4";"";5
1070;"1998-12-05 00:00:00";"Saturday";"December";2007;5;51;12;"Q4";"";6
1071;"1998-12-06 00:00:00";"Sunday";"December";2007;6;52;12;"Q4";"";7
1072;"1998-12-07 00:00:00";"Monday";"December";2007;7;1;12;"Q4";"";1
1073;"1998-12-08 00:00:00";"Tuesday";"December";2007;8;1;12;"Q4";"";2
1074;"1998-12-09 00:00:00";"Wednesday";"December";2007;9;1;12;"Q4";"";3
1075;"1998-12-10 00:00:00";"Thursday";"December";2007;10;1;12;"Q4";"";4
1076;"1998-12-11 00:00:00";"Friday";"December";2007;11;1;12;"Q4";"";5
1077;"1998-12-12 00:00:00";"Saturday";"December";2007;12;1;12;"Q4";"";6
1078;"1998-12-13 00:00:00";"Sunday";"December";2007;13;2;12;"Q4";"";7
1079;"1998-12-14 00:00:00";"Monday";"December";2007;14;2;12;"Q4";"";1
1080;"1998-12-15 00:00:00";"Tuesday";"December";2007;15;2;12;"Q4";"";2
1081;"1998-12-16 00:00:00";"Wednesday";"December";2007;16;2;12;"Q4";"";3
1082;"1998-12-17 00:00:00";"Thursday";"December";2007;17;2;12;"Q4";"";4
1083;"1998-12-18 00:00:00";"Friday";"December";2007;18;2;12;"Q4";"";5
1084;"1998-12-19 00:00:00";"Saturday";"December";2007;19;2;12;"Q4";"";6
1085;"1998-12-20 00:00:00";"Sunday";"December";2007;20;3;12;"Q4";"";7
1086;"1998-12-21 00:00:00";"Monday";"December";2007;21;3;12;"Q4";"";1
1087;"1998-12-22 00:00:00";"Tuesday";"December";2007;22;3;12;"Q4";"";2
1088;"1998-12-23 00:00:00";"Wednesday";"December";2007;23;3;12;"Q4";"";3
1089;"1998-12-24 00:00:00";"Thursday";"December";2007;24;3;12;"Q4";"";4
1090;"1998-12-25 00:00:00";"Friday";"December";2007;25;3;12;"Q4";"";5
1091;"1998-12-26 00:00:00";"Saturday";"December";2007;26;3;12;"Q4";"";6
1092;"1998-12-27 00:00:00";"Sunday";"December";2007;27;4;12;"Q4";"";7
1093;"1998-12-28 00:00:00";"Monday";"December";2007;28;4;12;"Q4";"";1
1094;"1998-12-29 00:00:00";"Tuesday";"December";2007;29;4;12;"Q4";"";2
1095;"1998-12-30 00:00:00";"Wednesday";"December";2007;30;4;12;"Q4";"";3
1096;"1998-12-31 00:00:00";"Thursday";"December";2007;31;4;12;"Q4";"";4
"warehouse_id";"warehouse_name";"wa_address1";"wa_address2";"wa_address3";"wa_address4";"warehouse_city";"warehouse_state_province";"warehouse_postal_code";"warehouse_country";"warehouse_owner_name";"warehouse_phone";"warehouse_fax"
1;"Salka Warehousing";"9716 Alovera Road";"";"";"";"Acapulco";"Guerrero";"55555";"Mexico";"";"821-555-1658";"594-555-2908"
2;"Foster Products";"958 Hilltop Dr";"";"";"";"Bellingham";"WA";"55555";"USA";"";"315-555-8947";"119-555-3826"
3;"Destination, Inc.";"4162 Euclid Ave";"";"";"";"Bremerton";"WA";"55555";"USA";"";"517-555-3022";"136-555-4501"
4;"Anderson Warehousing";"5657 Georgia Dr";"";"";"";"Camacho";"Zacatecas";"55555";"Mexico";"";"681-555-1655";"946-555-4848"
5;"Focus, Inc.";"9116 Tice Valley Blv.";"";"";"";"Guadalajara";"Jalisco";"55555";"Mexico";"";"344-555-5530";"379-555-9065"
6;"Big Quality Warehouse";"3521 Fourth Stret";"";"";"";"Beverly Hills";"CA";"55555";"USA";"";"892-555-3590";"388-555-7926"
7;"Artesia Warehousing, Inc.";"9889 Matterhorn Court";"";"";"";"Los Angeles";"CA";"55555";"USA";"";"859-555-2792";"740-555-6556"
8;"Bastani and Sons";"1893 Northridge Drive";"";"";"";"Marida";"Yucatan";"55555";"Mexico";"";"846-555-3024";"804-555-6674"
9;"Freeman And Co";"234 West Covina Pkwy";"";"";"";"Mexico City";"DF";"55555";"Mexico";"";"";""
10;"Jamison, Inc.";"1172 Liana Lane";"";"";"";"Orizaba";"Veracruz";"55555";"Mexico";"";"379-555-5756";"436-555-7920"
11;"Quality Distribution, Inc.";"6085 Darlene Drive";"";"";"";"Portland";"OR";"55555";"USA";"";"181-555-3588";"269-555-8381"
12;"Arnold and Sons";"5617 Saclan Terrace";"";"";"";"Hidalgo";"Zacatecas";"55555";"Mexico";"";"360-555-8035";"263-555-1427"
13;"Treehouse Distribution";"5473 Olive Hill";"";"";"";"Salem";"OR";"55555";"USA";"";"831-555-6210";"481-555-1317"
14;"Food Service Storage, Inc.";"5259 Mildred Ln";"";"";"";"San Francisco";"CA";"55555";"USA";"";"471-555-2456";"552-555-3249"
15;"Quality Warehousing and Trucking";"3337 Northpoint Ct";"";"";"";"Seattle";"WA";"55555";"USA";"";"427-555-9060";"869-555-1652"
16;"Jones International";"3377 Coachman Place";"";"";"";"Spokane";"WA";"55555";"USA";"";"144-555-5192";"971-555-6213"
17;"Jorge Garcia, Inc.";"4364 Viera Avenue";"";"";"";"Tacoma";"WA";"55555";"USA";"";"200-555-1310";"442-555-5874"
18;"Worthington Food Products";"4659 Cape Cod Way";"";"";"";"Hidalgo";"Zacatecas";"55555";"Mexico";"";"609-555-5413";"952-555-8492"
19;"Bellmont Distributing";"5900 May Rd";"";"";"";"Vancouver";"BC";"55555";"Canada";"";"226-555-5335";"361-555-7385"
20;"Rose Food Warehousing";"9104 Jacobsen Street";"";"";"";"Victoria";"BC";"55555";"Canada";"";"143-555-7496";"332-555-1803"
21;"Derby and Hunt";"600 Lake Nadine Place";"";"";"";"San Andres";"DF";"55555";"Mexico";"";"922-555-5214";"618-555-6578"
22;"Valdez Warehousing";"6714 Roundtree Court";"";"";"";"Walla Walla";"WA";"55555";"USA";"";"301-555-8174";"666-555-9881"
23;"Maddock Stored Foods";"8463 Kim Court";"";"";"";"Yakima";"WA";"55555";"USA";"";"803-555-8978";"630-555-2485"
24;"Jorgensen Service Storage";"4832 Park Glen Ct";"";"";"";"San Diego";"CA";"55555";"USA";"";"259-555-2824";"470-555-4760"
Day;City;Licence;Amount;Count
May 12,2010;Madrid;Personal;1;84
May 13,2010;Barcelona;Personal;2;841
May 14,2010;Paris;Personal;4;2
May 15,2010;Lausanne;Personal;8;231
May 16,2010;Lausanne;Corporate;16;4
May 17,2010;Lausanne;Partnership;32;65
May 18,2010;Zurich;Partnership;64;64
May 19,2010;Geneva;Corporate;128;13
May 20,2010;New York;Corporate;256;12
May 21,2010;New York;Corporate;512;564
Continent;Country;City
America;Canada;Quebec
America;Canada;Toronto
America;United States;Los Angeles
America;United States;New York
America;United States;San Francisco
America;Mexico;Mexico
America;Venezuela;Caracas
Europe;France;Paris
Europe;Spain;Barcelona
Europe;Spain;Madrid
Europe;Spain;Valencia
Europe;Switzerland;Geneva
Europe;Switzerland;Lausanne
Europe;Switzerland;Zurich
Company;Article;Licence
Crazy Development;olapy;Corporate
Crazy Development;olapy;Partnership
Crazy Development;olapy;Personal
Crazy Development;olapy;Startup
Year;Quarter;Month;Day
2010;Q1 2010;January 2010;January 1,2010
2010;Q1 2010;January 2010;January 2,2010
2010;Q1 2010;January 2010;January 3,2010
2010;Q1 2010;January 2010;January 4,2010
2010;Q1 2010;January 2010;January 5,2010
2010;Q1 2010;January 2010;January 6,2010
2010;Q1 2010;January 2010;January 7,2010
2010;Q1 2010;January 2010;January 8,2010
2010;Q1 2010;January 2010;January 9,2010
2010;Q1 2010;January 2010;January 10,2010
2010;Q1 2010;January 2010;January 11,2010
2010;Q1 2010;January 2010;January 12,2010
2010;Q1 2010;January 2010;January 13,2010
2010;Q1 2010;January 2010;January 14,2010
2010;Q1 2010;January 2010;January 15,2010
2010;Q1 2010;January 2010;January 16,2010
2010;Q1 2010;January 2010;January 17,2010
2010;Q1 2010;January 2010;January 18,2010
2010;Q1 2010;January 2010;January 19,2010
2010;Q1 2010;January 2010;January 20,2010
2010;Q1 2010;January 2010;January 21,2010
2010;Q1 2010;January 2010;January 22,2010
2010;Q1 2010;January 2010;January 23,2010
2010;Q1 2010;January 2010;January 24,2010
2010;Q1 2010;January 2010;January 25,2010
2010;Q1 2010;January 2010;January 26,2010
2010;Q1 2010;January 2010;January 27,2010
2010;Q1 2010;January 2010;January 28,2010
2010;Q1 2010;January 2010;January 29,2010
2010;Q1 2010;January 2010;January 30,2010
2010;Q1 2010;January 2010;January 31,2010
2010;Q1 2010;February 2010;February 1,2010
2010;Q1 2010;February 2010;February 2,2010
2010;Q1 2010;February 2010;February 3,2010
2010;Q1 2010;February 2010;February 4,2010
2010;Q1 2010;February 2010;February 5,2010
2010;Q1 2010;February 2010;February 6,2010
2010;Q1 2010;February 2010;February 7,2010
2010;Q1 2010;February 2010;February 8,2010
2010;Q1 2010;February 2010;February 9,2010
2010;Q1 2010;February 2010;February 10,2010
2010;Q1 2010;February 2010;February 11,2010
2010;Q1 2010;February 2010;February 12,2010
2010;Q1 2010;February 2010;February 13,2010
2010;Q1 2010;February 2010;February 14,2010
2010;Q1 2010;February 2010;February 15,2010
2010;Q1 2010;February 2010;February 16,2010
2010;Q1 2010;February 2010;February 17,2010
2010;Q1 2010;February 2010;February 18,2010
2010;Q1 2010;February 2010;February 19,2010
2010;Q1 2010;February 2010;February 20,2010
2010;Q1 2010;February 2010;February 21,2010
2010;Q1 2010;February 2010;February 22,2010
2010;Q1 2010;February 2010;February 23,2010
2010;Q1 2010;February 2010;February 24,2010
2010;Q1 2010;February 2010;February 25,2010
2010;Q1 2010;February 2010;February 26,2010
2010;Q1 2010;February 2010;February 27,2010
2010;Q1 2010;February 2010;February 28,2010
2010;Q1 2010;March 2010;March 1,2010
2010;Q1 2010;March 2010;March 2,2010
2010;Q1 2010;March 2010;March 3,2010
2010;Q1 2010;March 2010;March 4,2010
2010;Q1 2010;March 2010;March 5,2010
2010;Q1 2010;March 2010;March 6,2010
2010;Q1 2010;March 2010;March 7,2010
2010;Q1 2010;March 2010;March 8,2010
2010;Q1 2010;March 2010;March 9,2010
2010;Q1 2010;March 2010;March 10,2010
2010;Q1 2010;March 2010;March 11,2010
2010;Q1 2010;March 2010;March 12,2010
2010;Q1 2010;March 2010;March 13,2010
2010;Q1 2010;March 2010;March 14,2010
2010;Q1 2010;March 2010;March 15,2010
2010;Q1 2010;March 2010;March 16,2010
2010;Q1 2010;March 2010;March 17,2010
2010;Q1 2010;March 2010;March 18,2010
2010;Q1 2010;March 2010;March 19,2010
2010;Q1 2010;March 2010;March 20,2010
2010;Q1 2010;March 2010;March 21,2010
2010;Q1 2010;March 2010;March 22,2010
2010;Q1 2010;March 2010;March 23,2010
2010;Q1 2010;March 2010;March 24,2010
2010;Q1 2010;March 2010;March 25,2010
2010;Q1 2010;March 2010;March 26,2010
2010;Q1 2010;March 2010;March 27,2010
2010;Q1 2010;March 2010;March 28,2010
2010;Q1 2010;March 2010;March 29,2010
2010;Q1 2010;March 2010;March 30,2010
2010;Q1 2010;March 2010;March 31,2010
2010;Q2 2010;April 2010;April 1,2010
2010;Q2 2010;April 2010;April 2,2010
2010;Q2 2010;April 2010;April 3,2010
2010;Q2 2010;April 2010;April 4,2010
2010;Q2 2010;April 2010;April 5,2010
2010;Q2 2010;April 2010;April 6,2010
2010;Q2 2010;April 2010;April 7,2010
2010;Q2 2010;April 2010;April 8,2010
2010;Q2 2010;April 2010;April 9,2010
2010;Q2 2010;April 2010;April 10,2010
2010;Q2 2010;April 2010;April 11,2010
2010;Q2 2010;April 2010;April 12,2010
2010;Q2 2010;April 2010;April 13,2010
2010;Q2 2010;April 2010;April 14,2010
2010;Q2 2010;April 2010;April 15,2010
2010;Q2 2010;April 2010;April 16,2010
2010;Q2 2010;April 2010;April 17,2010
2010;Q2 2010;April 2010;April 18,2010
2010;Q2 2010;April 2010;April 19,2010
2010;Q2 2010;April 2010;April 20,2010
2010;Q2 2010;April 2010;April 21,2010
2010;Q2 2010;April 2010;April 22,2010
2010;Q2 2010;April 2010;April 23,2010
2010;Q2 2010;April 2010;April 24,2010
2010;Q2 2010;April 2010;April 25,2010
2010;Q2 2010;April 2010;April 26,2010
2010;Q2 2010;April 2010;April 27,2010
2010;Q2 2010;April 2010;April 28,2010
2010;Q2 2010;April 2010;April 29,2010
2010;Q2 2010;April 2010;April 30,2010
2010;Q2 2010;May 2010;May 1,2010
2010;Q2 2010;May 2010;May 2,2010
2010;Q2 2010;May 2010;May 3,2010
2010;Q2 2010;May 2010;May 4,2010
2010;Q2 2010;May 2010;May 5,2010
2010;Q2 2010;May 2010;May 6,2010
2010;Q2 2010;May 2010;May 7,2010
2010;Q2 2010;May 2010;May 8,2010
2010;Q2 2010;May 2010;May 9,2010
2010;Q2 2010;May 2010;May 10,2010
2010;Q2 2010;May 2010;May 11,2010
2010;Q2 2010;May 2010;May 12,2010
2010;Q2 2010;May 2010;May 13,2010
2010;Q2 2010;May 2010;May 14,2010
2010;Q2 2010;May 2010;May 15,2010
2010;Q2 2010;May 2010;May 16,2010
2010;Q2 2010;May 2010;May 17,2010
2010;Q2 2010;May 2010;May 18,2010
2010;Q2 2010;May 2010;May 19,2010
2010;Q2 2010;May 2010;May 20,2010
2010;Q2 2010;May 2010;May 21,2010
2010;Q2 2010;May 2010;May 22,2010
2010;Q2 2010;May 2010;May 23,2010
2010;Q2 2010;May 2010;May 24,2010
2010;Q2 2010;May 2010;May 25,2010
2010;Q2 2010;May 2010;May 26,2010
2010;Q2 2010;May 2010;May 27,2010
2010;Q2 2010;May 2010;May 28,2010
2010;Q2 2010;May 2010;May 29,2010
2010;Q2 2010;May 2010;May 30,2010
2010;Q2 2010;May 2010;May 31,2010
2010;Q2 2010;June 2010;June 1,2010
2010;Q2 2010;June 2010;June 2,2010
2010;Q2 2010;June 2010;June 3,2010
2010;Q2 2010;June 2010;June 4,2010
2010;Q2 2010;June 2010;June 5,2010
2010;Q2 2010;June 2010;June 6,2010
2010;Q2 2010;June 2010;June 7,2010
2010;Q2 2010;June 2010;June 8,2010
2010;Q2 2010;June 2010;June 9,2010
2010;Q2 2010;June 2010;June 10,2010
2010;Q2 2010;June 2010;June 11,2010
2010;Q2 2010;June 2010;June 12,2010
2010;Q2 2010;June 2010;June 13,2010
2010;Q2 2010;June 2010;June 14,2010
2010;Q2 2010;June 2010;June 15,2010
2010;Q2 2010;June 2010;June 16,2010
2010;Q2 2010;June 2010;June 17,2010
2010;Q2 2010;June 2010;June 18,2010
2010;Q2 2010;June 2010;June 19,2010
2010;Q2 2010;June 2010;June 20,2010
2010;Q2 2010;June 2010;June 21,2010
2010;Q2 2010;June 2010;June 22,2010
2010;Q2 2010;June 2010;June 23,2010
2010;Q2 2010;June 2010;June 24,2010
2010;Q2 2010;June 2010;June 25,2010
2010;Q2 2010;June 2010;June 26,2010
2010;Q2 2010;June 2010;June 27,2010
2010;Q2 2010;June 2010;June 28,2010
2010;Q2 2010;June 2010;June 29,2010
2010;Q2 2010;June 2010;June 30,2010
2010;Q3 2010;July 2010;July 1,2010
2010;Q3 2010;July 2010;July 2,2010
2010;Q3 2010;July 2010;July 3,2010
2010;Q3 2010;July 2010;July 4,2010
2010;Q3 2010;July 2010;July 5,2010
2010;Q3 2010;July 2010;July 6,2010
2010;Q3 2010;July 2010;July 7,2010
2010;Q3 2010;July 2010;July 8,2010
2010;Q3 2010;July 2010;July 9,2010
2010;Q3 2010;July 2010;July 10,2010
2010;Q3 2010;July 2010;July 11,2010
2010;Q3 2010;July 2010;July 12,2010
2010;Q3 2010;July 2010;July 13,2010
2010;Q3 2010;July 2010;July 14,2010
2010;Q3 2010;July 2010;July 15,2010
2010;Q3 2010;July 2010;July 16,2010
2010;Q3 2010;July 2010;July 17,2010
2010;Q3 2010;July 2010;July 18,2010
2010;Q3 2010;July 2010;July 19,2010
2010;Q3 2010;July 2010;July 20,2010
2010;Q3 2010;July 2010;July 21,2010
2010;Q3 2010;July 2010;July 22,2010
2010;Q3 2010;July 2010;July 23,2010
2010;Q3 2010;July 2010;July 24,2010
2010;Q3 2010;July 2010;July 25,2010
2010;Q3 2010;July 2010;July 26,2010
2010;Q3 2010;July 2010;July 27,2010
2010;Q3 2010;July 2010;July 28,2010
2010;Q3 2010;July 2010;July 29,2010
2010;Q3 2010;July 2010;July 30,2010
2010;Q3 2010;July 2010;July 31,2010
2010;Q3 2010;August 2010;August 1,2010
2010;Q3 2010;August 2010;August 2,2010
2010;Q3 2010;August 2010;August 3,2010
2010;Q3 2010;August 2010;August 4,2010
2010;Q3 2010;August 2010;August 5,2010
2010;Q3 2010;August 2010;August 6,2010
2010;Q3 2010;August 2010;August 7,2010
2010;Q3 2010;August 2010;August 8,2010
2010;Q3 2010;August 2010;August 9,2010
2010;Q3 2010;August 2010;August 10,2010
2010;Q3 2010;August 2010;August 11,2010
2010;Q3 2010;August 2010;August 12,2010
2010;Q3 2010;August 2010;August 13,2010
2010;Q3 2010;August 2010;August 14,2010
2010;Q3 2010;August 2010;August 15,2010
2010;Q3 2010;August 2010;August 16,2010
2010;Q3 2010;August 2010;August 17,2010
2010;Q3 2010;August 2010;August 18,2010
2010;Q3 2010;August 2010;August 19,2010
2010;Q3 2010;August 2010;August 20,2010
2010;Q3 2010;August 2010;August 21,2010
2010;Q3 2010;August 2010;August 22,2010
2010;Q3 2010;August 2010;August 23,2010
2010;Q3 2010;August 2010;August 24,2010
2010;Q3 2010;August 2010;August 25,2010
2010;Q3 2010;August 2010;August 26,2010
2010;Q3 2010;August 2010;August 27,2010
2010;Q3 2010;August 2010;August 28,2010
2010;Q3 2010;August 2010;August 29,2010
2010;Q3 2010;August 2010;August 30,2010
2010;Q3 2010;August 2010;August 31,2010
2010;Q3 2010;September 2010;September 1,2010
2010;Q3 2010;September 2010;September 2,2010
2010;Q3 2010;September 2010;September 3,2010
2010;Q3 2010;September 2010;September 4,2010
2010;Q3 2010;September 2010;September 5,2010
2010;Q3 2010;September 2010;September 6,2010
2010;Q3 2010;September 2010;September 7,2010
2010;Q3 2010;September 2010;September 8,2010
2010;Q3 2010;September 2010;September 9,2010
2010;Q3 2010;September 2010;September 10,2010
2010;Q3 2010;September 2010;September 11,2010
2010;Q3 2010;September 2010;September 12,2010
2010;Q3 2010;September 2010;September 13,2010
2010;Q3 2010;September 2010;September 14,2010
2010;Q3 2010;September 2010;September 15,2010
2010;Q3 2010;September 2010;September 16,2010
2010;Q3 2010;September 2010;September 17,2010
2010;Q3 2010;September 2010;September 18,2010
2010;Q3 2010;September 2010;September 19,2010
2010;Q3 2010;September 2010;September 20,2010
2010;Q3 2010;September 2010;September 21,2010
2010;Q3 2010;September 2010;September 22,2010
2010;Q3 2010;September 2010;September 23,2010
2010;Q3 2010;September 2010;September 24,2010
2010;Q3 2010;September 2010;September 25,2010
2010;Q3 2010;September 2010;September 26,2010
2010;Q3 2010;September 2010;September 27,2010
2010;Q3 2010;September 2010;September 28,2010
2010;Q3 2010;September 2010;September 29,2010
2010;Q3 2010;September 2010;September 30,2010
2010;Q4 2010;October 2010;October 1,2010
2010;Q4 2010;October 2010;October 2,2010
2010;Q4 2010;October 2010;October 3,2010
2010;Q4 2010;October 2010;October 4,2010
2010;Q4 2010;October 2010;October 5,2010
2010;Q4 2010;October 2010;October 6,2010
2010;Q4 2010;October 2010;October 7,2010
2010;Q4 2010;October 2010;October 8,2010
2010;Q4 2010;October 2010;October 9,2010
2010;Q4 2010;October 2010;October 10,2010
2010;Q4 2010;October 2010;October 11,2010
2010;Q4 2010;October 2010;October 12,2010
2010;Q4 2010;October 2010;October 13,2010
2010;Q4 2010;October 2010;October 14,2010
2010;Q4 2010;October 2010;October 15,2010
2010;Q4 2010;October 2010;October 16,2010
2010;Q4 2010;October 2010;October 17,2010
2010;Q4 2010;October 2010;October 18,2010
2010;Q4 2010;October 2010;October 19,2010
2010;Q4 2010;October 2010;October 20,2010
2010;Q4 2010;October 2010;October 21,2010
2010;Q4 2010;October 2010;October 22,2010
2010;Q4 2010;October 2010;October 23,2010
2010;Q4 2010;October 2010;October 24,2010
2010;Q4 2010;October 2010;October 25,2010
2010;Q4 2010;October 2010;October 26,2010
2010;Q4 2010;October 2010;October 27,2010
2010;Q4 2010;October 2010;October 28,2010
2010;Q4 2010;October 2010;October 29,2010
2010;Q4 2010;October 2010;October 30,2010
2010;Q4 2010;October 2010;October 31,2010
2010;Q4 2010;November 2010;November 1,2010
2010;Q4 2010;November 2010;November 2,2010
2010;Q4 2010;November 2010;November 3,2010
2010;Q4 2010;November 2010;November 4,2010
2010;Q4 2010;November 2010;November 5,2010
2010;Q4 2010;November 2010;November 6,2010
2010;Q4 2010;November 2010;November 7,2010
2010;Q4 2010;November 2010;November 8,2010
2010;Q4 2010;November 2010;November 9,2010
2010;Q4 2010;November 2010;November 10,2010
2010;Q4 2010;November 2010;November 11,2010
2010;Q4 2010;November 2010;November 12,2010
2010;Q4 2010;November 2010;November 13,2010
2010;Q4 2010;November 2010;November 14,2010
2010;Q4 2010;November 2010;November 15,2010
2010;Q4 2010;November 2010;November 16,2010
2010;Q4 2010;November 2010;November 17,2010
2010;Q4 2010;November 2010;November 18,2010
2010;Q4 2010;November 2010;November 19,2010
2010;Q4 2010;November 2010;November 20,2010
2010;Q4 2010;November 2010;November 21,2010
2010;Q4 2010;November 2010;November 22,2010
2010;Q4 2010;November 2010;November 23,2010
2010;Q4 2010;November 2010;November 24,2010
2010;Q4 2010;November 2010;November 25,2010
2010;Q4 2010;November 2010;November 26,2010
2010;Q4 2010;November 2010;November 27,2010
2010;Q4 2010;November 2010;November 28,2010
2010;Q4 2010;November 2010;November 29,2010
2010;Q4 2010;November 2010;November 30,2010
2010;Q4 2010;December 2010;December 1,2010
2010;Q4 2010;December 2010;December 2,2010
2010;Q4 2010;December 2010;December 3,2010
2010;Q4 2010;December 2010;December 4,2010
2010;Q4 2010;December 2010;December 5,2010
2010;Q4 2010;December 2010;December 6,2010
2010;Q4 2010;December 2010;December 7,2010
2010;Q4 2010;December 2010;December 8,2010
2010;Q4 2010;December 2010;December 9,2010
2010;Q4 2010;December 2010;December 10,2010
2010;Q4 2010;December 2010;December 11,2010
2010;Q4 2010;December 2010;December 12,2010
2010;Q4 2010;December 2010;December 13,2010
2010;Q4 2010;December 2010;December 14,2010
2010;Q4 2010;December 2010;December 15,2010
2010;Q4 2010;December 2010;December 16,2010
2010;Q4 2010;December 2010;December 17,2010
2010;Q4 2010;December 2010;December 18,2010
2010;Q4 2010;December 2010;December 19,2010
2010;Q4 2010;December 2010;December 20,2010
2010;Q4 2010;December 2010;December 21,2010
2010;Q4 2010;December 2010;December 22,2010
2010;Q4 2010;December 2010;December 23,2010
2010;Q4 2010;December 2010;December 24,2010
2010;Q4 2010;December 2010;December 25,2010
2010;Q4 2010;December 2010;December 26,2010
2010;Q4 2010;December 2010;December 27,2010
2010;Q4 2010;December 2010;December 28,2010
2010;Q4 2010;December 2010;December 29,2010
2010;Q4 2010;December 2010;December 30,2010
2010;Q4 2010;December 2010;December 31,2010
2011;Q1 2011;January 2011;January 1,2011
2011;Q1 2011;January 2011;January 2,2011
2011;Q1 2011;January 2011;January 3,2011
2011;Q1 2011;January 2011;January 4,2011
2011;Q1 2011;January 2011;January 5,2011
2011;Q1 2011;January 2011;January 6,2011
2011;Q1 2011;January 2011;January 7,2011
2011;Q1 2011;January 2011;January 8,2011
2011;Q1 2011;January 2011;January 9,2011
2011;Q1 2011;January 2011;January 10,2011
2011;Q1 2011;January 2011;January 11,2011
2011;Q1 2011;January 2011;January 12,2011
2011;Q1 2011;January 2011;January 13,2011
2011;Q1 2011;January 2011;January 14,2011
2011;Q1 2011;January 2011;January 15,2011
2011;Q1 2011;January 2011;January 16,2011
2011;Q1 2011;January 2011;January 17,2011
2011;Q1 2011;January 2011;January 18,2011
2011;Q1 2011;January 2011;January 19,2011
2011;Q1 2011;January 2011;January 20,2011
2011;Q1 2011;January 2011;January 21,2011
2011;Q1 2011;January 2011;January 22,2011
2011;Q1 2011;January 2011;January 23,2011
2011;Q1 2011;January 2011;January 24,2011
2011;Q1 2011;January 2011;January 25,2011
2011;Q1 2011;January 2011;January 26,2011
2011;Q1 2011;January 2011;January 27,2011
2011;Q1 2011;January 2011;January 28,2011
2011;Q1 2011;January 2011;January 29,2011
2011;Q1 2011;January 2011;January 30,2011
2011;Q1 2011;January 2011;January 31,2011
2011;Q1 2011;February 2011;February 1,2011
2011;Q1 2011;February 2011;February 2,2011
2011;Q1 2011;February 2011;February 3,2011
2011;Q1 2011;February 2011;February 4,2011
2011;Q1 2011;February 2011;February 5,2011
2011;Q1 2011;February 2011;February 6,2011
2011;Q1 2011;February 2011;February 7,2011
2011;Q1 2011;February 2011;February 8,2011
2011;Q1 2011;February 2011;February 9,2011
2011;Q1 2011;February 2011;February 10,2011
2011;Q1 2011;February 2011;February 11,2011
2011;Q1 2011;February 2011;February 12,2011
2011;Q1 2011;February 2011;February 13,2011
2011;Q1 2011;February 2011;February 14,2011
2011;Q1 2011;February 2011;February 15,2011
2011;Q1 2011;February 2011;February 16,2011
2011;Q1 2011;February 2011;February 17,2011
2011;Q1 2011;February 2011;February 18,2011
2011;Q1 2011;February 2011;February 19,2011
2011;Q1 2011;February 2011;February 20,2011
2011;Q1 2011;February 2011;February 21,2011
2011;Q1 2011;February 2011;February 22,2011
2011;Q1 2011;February 2011;February 23,2011
2011;Q1 2011;February 2011;February 24,2011
2011;Q1 2011;February 2011;February 25,2011
2011;Q1 2011;February 2011;February 26,2011
2011;Q1 2011;February 2011;February 27,2011
2011;Q1 2011;February 2011;February 28,2011
2011;Q1 2011;March 2011;March 1,2011
2011;Q1 2011;March 2011;March 2,2011
2011;Q1 2011;March 2011;March 3,2011
2011;Q1 2011;March 2011;March 4,2011
2011;Q1 2011;March 2011;March 5,2011
2011;Q1 2011;March 2011;March 6,2011
2011;Q1 2011;March 2011;March 7,2011
2011;Q1 2011;March 2011;March 8,2011
2011;Q1 2011;March 2011;March 9,2011
2011;Q1 2011;March 2011;March 10,2011
2011;Q1 2011;March 2011;March 11,2011
2011;Q1 2011;March 2011;March 12,2011
2011;Q1 2011;March 2011;March 13,2011
2011;Q1 2011;March 2011;March 14,2011
2011;Q1 2011;March 2011;March 15,2011
2011;Q1 2011;March 2011;March 16,2011
2011;Q1 2011;March 2011;March 17,2011
2011;Q1 2011;March 2011;March 18,2011
2011;Q1 2011;March 2011;March 19,2011
2011;Q1 2011;March 2011;March 20,2011
2011;Q1 2011;March 2011;March 21,2011
2011;Q1 2011;March 2011;March 22,2011
2011;Q1 2011;March 2011;March 23,2011
2011;Q1 2011;March 2011;March 24,2011
2011;Q1 2011;March 2011;March 25,2011
2011;Q1 2011;March 2011;March 26,2011
2011;Q1 2011;March 2011;March 27,2011
2011;Q1 2011;March 2011;March 28,2011
2011;Q1 2011;March 2011;March 29,2011
2011;Q1 2011;March 2011;March 30,2011
2011;Q1 2011;March 2011;March 31,2011
2011;Q2 2011;April 2011;April 1,2011
2011;Q2 2011;April 2011;April 2,2011
2011;Q2 2011;April 2011;April 3,2011
2011;Q2 2011;April 2011;April 4,2011
2011;Q2 2011;April 2011;April 5,2011
2011;Q2 2011;April 2011;April 6,2011
2011;Q2 2011;April 2011;April 7,2011
2011;Q2 2011;April 2011;April 8,2011
2011;Q2 2011;April 2011;April 9,2011
2011;Q2 2011;April 2011;April 10,2011
2011;Q2 2011;April 2011;April 11,2011
2011;Q2 2011;April 2011;April 12,2011
2011;Q2 2011;April 2011;April 13,2011
2011;Q2 2011;April 2011;April 14,2011
2011;Q2 2011;April 2011;April 15,2011
2011;Q2 2011;April 2011;April 16,2011
2011;Q2 2011;April 2011;April 17,2011
2011;Q2 2011;April 2011;April 18,2011
2011;Q2 2011;April 2011;April 19,2011
2011;Q2 2011;April 2011;April 20,2011
2011;Q2 2011;April 2011;April 21,2011
2011;Q2 2011;April 2011;April 22,2011
2011;Q2 2011;April 2011;April 23,2011
2011;Q2 2011;April 2011;April 24,2011
2011;Q2 2011;April 2011;April 25,2011
2011;Q2 2011;April 2011;April 26,2011
2011;Q2 2011;April 2011;April 27,2011
2011;Q2 2011;April 2011;April 28,2011
2011;Q2 2011;April 2011;April 29,2011
2011;Q2 2011;April 2011;April 30,2011
2011;Q2 2011;May 2011;May 1,2011
2011;Q2 2011;May 2011;May 2,2011
2011;Q2 2011;May 2011;May 3,2011
2011;Q2 2011;May 2011;May 4,2011
2011;Q2 2011;May 2011;May 5,2011
2011;Q2 2011;May 2011;May 6,2011
2011;Q2 2011;May 2011;May 7,2011
2011;Q2 2011;May 2011;May 8,2011
2011;Q2 2011;May 2011;May 9,2011
2011;Q2 2011;May 2011;May 10,2011
2011;Q2 2011;May 2011;May 11,2011
2011;Q2 2011;May 2011;May 12,2011
2011;Q2 2011;May 2011;May 13,2011
2011;Q2 2011;May 2011;May 14,2011
2011;Q2 2011;May 2011;May 15,2011
2011;Q2 2011;May 2011;May 16,2011
2011;Q2 2011;May 2011;May 17,2011
2011;Q2 2011;May 2011;May 18,2011
2011;Q2 2011;May 2011;May 19,2011
2011;Q2 2011;May 2011;May 20,2011
2011;Q2 2011;May 2011;May 21,2011
2011;Q2 2011;May 2011;May 22,2011
2011;Q2 2011;May 2011;May 23,2011
2011;Q2 2011;May 2011;May 24,2011
2011;Q2 2011;May 2011;May 25,2011
2011;Q2 2011;May 2011;May 26,2011
2011;Q2 2011;May 2011;May 27,2011
2011;Q2 2011;May 2011;May 28,2011
2011;Q2 2011;May 2011;May 29,2011
2011;Q2 2011;May 2011;May 30,2011
2011;Q2 2011;May 2011;May 31,2011
2011;Q2 2011;June 2011;June 1,2011
2011;Q2 2011;June 2011;June 2,2011
2011;Q2 2011;June 2011;June 3,2011
2011;Q2 2011;June 2011;June 4,2011
2011;Q2 2011;June 2011;June 5,2011
2011;Q2 2011;June 2011;June 6,2011
2011;Q2 2011;June 2011;June 7,2011
2011;Q2 2011;June 2011;June 8,2011
2011;Q2 2011;June 2011;June 9,2011
2011;Q2 2011;June 2011;June 10,2011
2011;Q2 2011;June 2011;June 11,2011
2011;Q2 2011;June 2011;June 12,2011
2011;Q2 2011;June 2011;June 13,2011
2011;Q2 2011;June 2011;June 14,2011
2011;Q2 2011;June 2011;June 15,2011
2011;Q2 2011;June 2011;June 16,2011
2011;Q2 2011;June 2011;June 17,2011
2011;Q2 2011;June 2011;June 18,2011
2011;Q2 2011;June 2011;June 19,2011
2011;Q2 2011;June 2011;June 20,2011
2011;Q2 2011;June 2011;June 21,2011
2011;Q2 2011;June 2011;June 22,2011
2011;Q2 2011;June 2011;June 23,2011
2011;Q2 2011;June 2011;June 24,2011
2011;Q2 2011;June 2011;June 25,2011
2011;Q2 2011;June 2011;June 26,2011
2011;Q2 2011;June 2011;June 27,2011
2011;Q2 2011;June 2011;June 28,2011
2011;Q2 2011;June 2011;June 29,2011
2011;Q2 2011;June 2011;June 30,2011
2011;Q3 2011;July 2011;July 1,2011
2011;Q3 2011;July 2011;July 2,2011
2011;Q3 2011;July 2011;July 3,2011
2011;Q3 2011;July 2011;July 4,2011
2011;Q3 2011;July 2011;July 5,2011
2011;Q3 2011;July 2011;July 6,2011
2011;Q3 2011;July 2011;July 7,2011
2011;Q3 2011;July 2011;July 8,2011
2011;Q3 2011;July 2011;July 9,2011
2011;Q3 2011;July 2011;July 10,2011
2011;Q3 2011;July 2011;July 11,2011
2011;Q3 2011;July 2011;July 12,2011
2011;Q3 2011;July 2011;July 13,2011
2011;Q3 2011;July 2011;July 14,2011
2011;Q3 2011;July 2011;July 15,2011
2011;Q3 2011;July 2011;July 16,2011
2011;Q3 2011;July 2011;July 17,2011
2011;Q3 2011;July 2011;July 18,2011
2011;Q3 2011;July 2011;July 19,2011
2011;Q3 2011;July 2011;July 20,2011
2011;Q3 2011;July 2011;July 21,2011
2011;Q3 2011;July 2011;July 22,2011
2011;Q3 2011;July 2011;July 23,2011
2011;Q3 2011;July 2011;July 24,2011
2011;Q3 2011;July 2011;July 25,2011
2011;Q3 2011;July 2011;July 26,2011
2011;Q3 2011;July 2011;July 27,2011
2011;Q3 2011;July 2011;July 28,2011
2011;Q3 2011;July 2011;July 29,2011
2011;Q3 2011;July 2011;July 30,2011
2011;Q3 2011;July 2011;July 31,2011
2011;Q3 2011;August 2011;August 1,2011
2011;Q3 2011;August 2011;August 2,2011
2011;Q3 2011;August 2011;August 3,2011
2011;Q3 2011;August 2011;August 4,2011
2011;Q3 2011;August 2011;August 5,2011
2011;Q3 2011;August 2011;August 6,2011
2011;Q3 2011;August 2011;August 7,2011
2011;Q3 2011;August 2011;August 8,2011
2011;Q3 2011;August 2011;August 9,2011
2011;Q3 2011;August 2011;August 10,2011
2011;Q3 2011;August 2011;August 11,2011
2011;Q3 2011;August 2011;August 12,2011
2011;Q3 2011;August 2011;August 13,2011
2011;Q3 2011;August 2011;August 14,2011
2011;Q3 2011;August 2011;August 15,2011
2011;Q3 2011;August 2011;August 16,2011
2011;Q3 2011;August 2011;August 17,2011
2011;Q3 2011;August 2011;August 18,2011
2011;Q3 2011;August 2011;August 19,2011
2011;Q3 2011;August 2011;August 20,2011
2011;Q3 2011;August 2011;August 21,2011
2011;Q3 2011;August 2011;August 22,2011
2011;Q3 2011;August 2011;August 23,2011
2011;Q3 2011;August 2011;August 24,2011
2011;Q3 2011;August 2011;August 25,2011
2011;Q3 2011;August 2011;August 26,2011
2011;Q3 2011;August 2011;August 27,2011
2011;Q3 2011;August 2011;August 28,2011
2011;Q3 2011;August 2011;August 29,2011
2011;Q3 2011;August 2011;August 30,2011
2011;Q3 2011;August 2011;August 31,2011
2011;Q3 2011;September 2011;September 1,2011
2011;Q3 2011;September 2011;September 2,2011
2011;Q3 2011;September 2011;September 3,2011
2011;Q3 2011;September 2011;September 4,2011
2011;Q3 2011;September 2011;September 5,2011
2011;Q3 2011;September 2011;September 6,2011
2011;Q3 2011;September 2011;September 7,2011
2011;Q3 2011;September 2011;September 8,2011
2011;Q3 2011;September 2011;September 9,2011
2011;Q3 2011;September 2011;September 10,2011
2011;Q3 2011;September 2011;September 11,2011
2011;Q3 2011;September 2011;September 12,2011
2011;Q3 2011;September 2011;September 13,2011
2011;Q3 2011;September 2011;September 14,2011
2011;Q3 2011;September 2011;September 15,2011
2011;Q3 2011;September 2011;September 16,2011
2011;Q3 2011;September 2011;September 17,2011
2011;Q3 2011;September 2011;September 18,2011
2011;Q3 2011;September 2011;September 19,2011
2011;Q3 2011;September 2011;September 20,2011
2011;Q3 2011;September 2011;September 21,2011
2011;Q3 2011;September 2011;September 22,2011
2011;Q3 2011;September 2011;September 23,2011
2011;Q3 2011;September 2011;September 24,2011
2011;Q3 2011;September 2011;September 25,2011
2011;Q3 2011;September 2011;September 26,2011
2011;Q3 2011;September 2011;September 27,2011
2011;Q3 2011;September 2011;September 28,2011
2011;Q3 2011;September 2011;September 29,2011
2011;Q3 2011;September 2011;September 30,2011
2011;Q4 2011;October 2011;October 1,2011
2011;Q4 2011;October 2011;October 2,2011
2011;Q4 2011;October 2011;October 3,2011
2011;Q4 2011;October 2011;October 4,2011
2011;Q4 2011;October 2011;October 5,2011
2011;Q4 2011;October 2011;October 6,2011
2011;Q4 2011;October 2011;October 7,2011
2011;Q4 2011;October 2011;October 8,2011
2011;Q4 2011;October 2011;October 9,2011
2011;Q4 2011;October 2011;October 10,2011
2011;Q4 2011;October 2011;October 11,2011
2011;Q4 2011;October 2011;October 12,2011
2011;Q4 2011;October 2011;October 13,2011
2011;Q4 2011;October 2011;October 14,2011
2011;Q4 2011;October 2011;October 15,2011
2011;Q4 2011;October 2011;October 16,2011
2011;Q4 2011;October 2011;October 17,2011
2011;Q4 2011;October 2011;October 18,2011
2011;Q4 2011;October 2011;October 19,2011
2011;Q4 2011;October 2011;October 20,2011
2011;Q4 2011;October 2011;October 21,2011
2011;Q4 2011;October 2011;October 22,2011
2011;Q4 2011;October 2011;October 23,2011
2011;Q4 2011;October 2011;October 24,2011
2011;Q4 2011;October 2011;October 25,2011
2011;Q4 2011;October 2011;October 26,2011
2011;Q4 2011;October 2011;October 27,2011
2011;Q4 2011;October 2011;October 28,2011
2011;Q4 2011;October 2011;October 29,2011
2011;Q4 2011;October 2011;October 30,2011
2011;Q4 2011;October 2011;October 31,2011
2011;Q4 2011;November 2011;November 1,2011
2011;Q4 2011;November 2011;November 2,2011
2011;Q4 2011;November 2011;November 3,2011
2011;Q4 2011;November 2011;November 4,2011
2011;Q4 2011;November 2011;November 5,2011
2011;Q4 2011;November 2011;November 6,2011
2011;Q4 2011;November 2011;November 7,2011
2011;Q4 2011;November 2011;November 8,2011
2011;Q4 2011;November 2011;November 9,2011
2011;Q4 2011;November 2011;November 10,2011
2011;Q4 2011;November 2011;November 11,2011
2011;Q4 2011;November 2011;November 12,2011
2011;Q4 2011;November 2011;November 13,2011
2011;Q4 2011;November 2011;November 14,2011
2011;Q4 2011;November 2011;November 15,2011
2011;Q4 2011;November 2011;November 16,2011
2011;Q4 2011;November 2011;November 17,2011
2011;Q4 2011;November 2011;November 18,2011
2011;Q4 2011;November 2011;November 19,2011
2011;Q4 2011;November 2011;November 20,2011
2011;Q4 2011;November 2011;November 21,2011
2011;Q4 2011;November 2011;November 22,2011
2011;Q4 2011;November 2011;November 23,2011
2011;Q4 2011;November 2011;November 24,2011
2011;Q4 2011;November 2011;November 25,2011
2011;Q4 2011;November 2011;November 26,2011
2011;Q4 2011;November 2011;November 27,2011
2011;Q4 2011;November 2011;November 28,2011
2011;Q4 2011;November 2011;November 29,2011
2011;Q4 2011;November 2011;November 30,2011
2011;Q4 2011;December 2011;December 1,2011
2011;Q4 2011;December 2011;December 2,2011
2011;Q4 2011;December 2011;December 3,2011
2011;Q4 2011;December 2011;December 4,2011
2011;Q4 2011;December 2011;December 5,2011
2011;Q4 2011;December 2011;December 6,2011
2011;Q4 2011;December 2011;December 7,2011
2011;Q4 2011;December 2011;December 8,2011
2011;Q4 2011;December 2011;December 9,2011
2011;Q4 2011;December 2011;December 10,2011
2011;Q4 2011;December 2011;December 11,2011
2011;Q4 2011;December 2011;December 12,2011
2011;Q4 2011;December 2011;December 13,2011
2011;Q4 2011;December 2011;December 14,2011
2011;Q4 2011;December 2011;December 15,2011
2011;Q4 2011;December 2011;December 16,2011
2011;Q4 2011;December 2011;December 17,2011
2011;Q4 2011;December 2011;December 18,2011
2011;Q4 2011;December 2011;December 19,2011
2011;Q4 2011;December 2011;December 20,2011
2011;Q4 2011;December 2011;December 21,2011
2011;Q4 2011;December 2011;December 22,2011
2011;Q4 2011;December 2011;December 23,2011
2011;Q4 2011;December 2011;December 24,2011
2011;Q4 2011;December 2011;December 25,2011
2011;Q4 2011;December 2011;December 26,2011
2011;Q4 2011;December 2011;December 27,2011
2011;Q4 2011;December 2011;December 28,2011
2011;Q4 2011;December 2011;December 29,2011
2011;Q4 2011;December 2011;December 30,2011
2011;Q4 2011;December 2011;December 31,2011
class ConditionError(Exception):
def __init__(self, value):
self.value = value
def __str__(self):
return repr(self.value)
# -*- encoding: utf8 -*-
from __future__ import absolute_import, division, print_function
import itertools
import os
import re
from os.path import expanduser
from collections import OrderedDict
import numpy as np
import pandas as pd
import pandas.io.sql as psql
from ..tools.config_file_parser import ConfigParser
from ..tools.connection import MyDB
RUNNING_TOX = 'RUNTING_TOX' in os.environ
class MdxEngine:
"""
......@@ -17,77 +25,192 @@ class MdxEngine:
:param mdx_query: query to execute
"""
CUBE_FOLDER = "cubes"
FACTS_TABLE_NAME = "Facts"
# (before instantiate MdxEngine I need to access cubes information)
csv_files_cubes = []
postgres_db_cubes = []
# to show just config file's dimensions
dimension_display_name = []
def __init__(self,
cube_name,
cubes_path=None,
mdx_query=None,
cube_folder=CUBE_FOLDER,
sep=';',
fact_table_name=FACTS_TABLE_NAME):
fact_table_name="Facts"):
'''
:param cube_folder: parent cube folder name
:param mdx_query: query to execute
:param sep: separator in the csv files
'''
self.cube = cube_name
self.cube_folder = cube_folder
self.cube = cube_name
self.sep = sep
self.facts = fact_table_name
self.mdx_query = mdx_query
self.cube_path = self._get_cube_path()
self.load_star_schema_dataframe = self._get_star_schema_dataframe(
cube_name)
if cubes_path is None:
self.cube_path = self._get_default_cube_directory()
else:
self.cube_path = cubes_path
# to get cubes in db
self._ = self.get_cubes_names()
self.tables_loaded = self._load_tables()
self.tables_names = self._get_tables_name()
# all measures
self.measures = self._get_measures()
self.load_star_schema_dataframe = self._get_star_schema_dataframe(
cube_name)
self.tables_names = self._get_tables_name()
# default measure is the first one
self.selected_measures = [self.measures[0]]
@classmethod
def get_cubes_names(self):
def get_cubes_names(cls):
'''
:return: list cubes name under cubes folder
'''
location = os.path.join(
os.path.abspath(
os.path.join(
os.path.dirname(__file__), "..", "..", "..", "..")),
MdxEngine.CUBE_FOLDER)
return [
file for file in os.listdir(location)
if os.path.isdir(os.path.join(location, file))
]
# get csv files folders (cubes)
# toxworkdir does not expanduser properly
if RUNNING_TOX:
home_directory = os.environ.get('HOME_DIR')
else:
home_directory = expanduser("~")
location = os.path.join(home_directory, 'olapy-data',
cls.CUBE_FOLDER)
try:
MdxEngine.csv_files_cubes = [
file for file in os.listdir(location)
if os.path.isdir(os.path.join(location, file))
]
except:
pass
# get postgres databases
try:
db = MyDB()
cursor = db.connection.cursor()
cursor.execute("""SELECT datname FROM pg_database
WHERE datistemplate = false;""")
MdxEngine.postgres_db_cubes = [
database[0] for database in cursor.fetchall()
]
except:
pass
return MdxEngine.csv_files_cubes + MdxEngine.postgres_db_cubes
def _get_default_cube_directory(self):
# toxworkdir does not expanduser properly
if RUNNING_TOX:
home_directory = os.environ.get('HOME_DIR')
else:
home_directory = expanduser("~")
return os.path.join(home_directory, 'olapy-data', self.cube_folder)
def _get_tables_name(self):
return self.tables_loaded.keys()
def _get_cube_path(self):
'''
:return: return local cube folder name with full path
'''
return os.path.join(
os.path.abspath(
os.path.join(
os.path.dirname(__file__), '..', "..", '..', '..')),
self.cube_folder)
def _load_table_config_file(self, cube_obj):
"""
load tables from config file
:param cube_obj: cubes object
:return: tables dict with table name as key and dataframe as value
"""
def _load_tables(self):
tables = {}
# just one facts table right now
self.facts = cube_obj.facts[0].table_name
db = MyDB(db=self.cube)
for table in cube_obj.dimensions:
value = psql.read_sql_query("SELECT * FROM {0}".format(table.name),
db.connection)
tables[table.name] = value[[
col for col in value.columns if col.lower()[-3:] != '_id'
]]
# update table display name
for dimension in cube_obj.dimensions:
if dimension.displayName and dimension.name and dimension.displayName != dimension.name:
tables[dimension.displayName] = tables[dimension.name][
dimension.columns]
MdxEngine.dimension_display_name.append(dimension.name)
return tables
def _load_tables_csv_files(self):
"""
load all tables
:return: dict with key as table name and DataFrame as value
load tables from csv files
:return: tables dict with table name as key and dataframe as value
"""
cube = self.get_cube()
tables = {}
cube = self.get_cube()
for file in os.listdir(cube):
# to remove file extension ".csv"
table_name = os.path.splitext(file)[0]
value = pd.read_csv(os.path.join(cube, file), sep=self.sep)
tables[table_name] = value[
[col for col in value.columns if col.lower()[-3:] != '_id']]
tables[table_name] = value[[
col for col in value.columns if col.lower()[-3:] != '_id'
]]
return tables
def _load_tables_db(self):
"""
load tables from database
:return: tables dict with table name as key and dataframe as value
"""
tables = {}
db = MyDB(db=self.cube)
cursor = db.connection.cursor()
cursor.execute("""SELECT table_name FROM information_schema.tables
WHERE table_schema = 'public'""")
for table_name in cursor.fetchall():
value = psql.read_sql_query(
'SELECT * FROM "{0}" '.format(table_name[0]), db.connection)
tables[table_name[0]] = value[[
col for col in value.columns if col.lower()[-3:] != '_id'
]]
return tables
def _load_tables(self):
"""
load all tables
:return: dict with key as table name and DataFrame as value
"""
config_file_parser = ConfigParser(self.cube_path)
tables = {}
if config_file_parser.config_file_exist(
) and self.cube in config_file_parser.get_cubes_names():
for cubes in config_file_parser.construct_cubes():
# TODO cubes.source == 'csv'
if cubes.source == 'postgres':
tables = self._load_table_config_file(cubes)
elif self.cube in self.csv_files_cubes:
tables = self._load_tables_csv_files()
elif self.cube in self.postgres_db_cubes:
tables = self._load_tables_db()
return tables
def _get_measures(self):
......@@ -95,21 +218,122 @@ class MdxEngine:
:return: all numerical columns in facts table
"""
return list(self.tables_loaded[self.facts].select_dtypes(
include=[np.number]).columns)
# col.lower()[-2:] != 'id' to ignore any id column
return [
col
for col in self.tables_loaded[self.facts].select_dtypes(
include=[np.number]).columns if col.lower()[-2:] != 'id'
]
def _construct_star_schema_config_file(self, cube_name, cubes_obj):
"""
Construct star schema Dataframe from configuration file
:param cube_name: cube name (or database name)
:param cubes_obj: cubes object
:return: star schema Dataframe
"""
self.facts = cubes_obj.facts[0].table_name
db = MyDB(db=cube_name)
# load facts table
fusion = psql.read_sql_query("SELECT * FROM {0}".format(self.facts),
db.connection)
for fact_key, dimension_and_key in cubes_obj.facts[0].keys.items():
df = psql.read_sql_query(
"SELECT * FROM {0}".format(dimension_and_key.split('.')[0]),
db.connection)
fusion = fusion.merge(
df, left_on=fact_key, right_on=dimension_and_key.split('.')[1])
# TODO CHOSE BETWEEN THOSES DF
# if separated dimensions
# fusion = fusion.merge(df, left_on=fact_key,right_on=dimension_and_key.split('.')[1])
# TODO CHOSE BETWEEN THOSES DF
# if facts contains all dimensions
# fusion = facts
# measures in config-file only
if cubes_obj.facts[0].measures:
self.measures = cubes_obj.facts[0].measures
def _get_star_schema_dataframe(self, cube):
return fusion
def _construct_star_schema_csv_files(self, cube_name):
"""
Construct star schema Dataframe from csv files
:param cube_name: cube name (folder name)
:return: star schema Dataframe
"""
cube = self.get_cube()
# loading facts table
fusion = pd.read_csv(
os.path.join(cube, self.facts + '.csv'), sep=self.sep)
for file_name in os.listdir(cube):
try:
fusion = fusion.merge(
pd.read_csv(os.path.join(cube, file_name), sep=self.sep))
except:
print('No common column')
pass
return fusion
def _construct_star_schema_db(self, cube_name):
"""
Construct star schema Dataframe from database
:param cube_name: cube name (database name)
:return: star schema Dataframe
"""
db = MyDB(db=cube_name)
# load facts table
fusion = psql.read_sql_query('SELECT * FROM "{0}" '.format(self.facts),
db.connection)
cursor = db.connection.cursor()
cursor.execute("""SELECT table_name FROM information_schema.tables
WHERE table_schema = 'public'""")
for db_table_name in cursor.fetchall():
try:
fusion = fusion.merge(
psql.read_sql_query("SELECT * FROM {0}".format(
db_table_name[0]), db.connection))
except:
print('No common column')
pass
return fusion
def _get_star_schema_dataframe(self, cube_name):
'''
:return: all DataFrames merged as star schema
'''
# star schema = (http://datawarehouse4u.info/Data-warehouse-schema-architecture-star-schema.html)
cube = self.get_cube()
# loading facts table
df = pd.read_csv(os.path.join(cube, self.facts + '.csv'), sep=self.sep)
for f in os.listdir(cube):
df = df.merge(pd.read_csv(os.path.join(cube, f), sep=self.sep))
# TODO check this
return df[[col for col in df.columns if col.lower()[-3:] != '_id']]
fusion = None
config_file_parser = ConfigParser(self.cube_path)
if config_file_parser.config_file_exist(
) and cube_name in config_file_parser.get_cubes_names():
for cubes in config_file_parser.construct_cubes():
# TODO cubes.source == 'csv'
if cubes.source == 'postgres':
fusion = self._construct_star_schema_config_file(cube_name,
cubes)
elif cube_name in self.csv_files_cubes:
fusion = self._construct_star_schema_csv_files(cube_name)
elif cube_name in self.postgres_db_cubes:
fusion = self._construct_star_schema_db(cube_name)
return fusion[[
col for col in fusion.columns if col.lower()[-3:] != '_id'
]]
def get_all_tables_names(self, ignore_fact=False):
"""
......@@ -125,15 +349,17 @@ class MdxEngine:
def get_cube(self):
"""
get path to the cube (example /home/your_user_name/olapy-core/cubes)
:return: path to the cube
"""
return os.path.join(self.cube_path, self.cube)
# TODO temporary function
def get_tuples(self, query, start=None, stop=None):
# TODO use grako instead and remove regex
regex = "(\[[\w\d ]+\](\.\[[\w\d\.\- ]+\])*\.?((Members)|(\[Q\d\]))?)"
# french characters
# or use new regex 2017.02.08
regex = "(\[[\w+\d ]+\](\.\[[\w+\d\.\,\s\_\-\é\ù\è\ù\û\ü\ÿ\\\à\â\æ\ç\é\è\ê\ë\ï\î" \
"\ô\œ\Ù\Û\Ü\Ÿ\À\Â\Æ\Ç\É\È\Ê\Ë\Ï\Î\Ô\Œ\& ]+\])*\.?((Members)|(\[Q\d\]))?)"
if start is not None:
start = query.index(start)
......@@ -144,7 +370,9 @@ class MdxEngine:
return [[
tup_att.replace('All ', '').replace('[', "").replace("]", "")
for tup_att in tup[0].replace('.Members', '').split('.')
] for tup in re.compile(regex).findall(query[start:stop])
]
for tup in re.compile(regex).findall(
query.encode("utf-8")[start:stop])
if len(tup[0].split('.')) > 1]
# TODO temporary function
......@@ -156,7 +384,6 @@ class MdxEngine:
"""
tuples_on_mdx_query = self.get_tuples(query)
on_rows = []
on_columns = []
on_where = []
......@@ -449,7 +676,6 @@ class MdxEngine:
# use measures that exists on where or insides axes
query_axes = self.decorticate_query(self.mdx_query)
if self.change_measures(query_axes['all']):
self.selected_measures = self.change_measures(query_axes['all'])
......@@ -521,8 +747,7 @@ class MdxEngine:
# TODO groupby in web demo (remove it for more performance)
# TODO margins=True for columns total !!!!!
return {
'result':
df.drop_duplicates().replace(np.nan, -1).groupby(cols).sum(),
'result': df.groupby(cols).sum()[self.selected_measures],
'columns_desc': tables_n_columns
}
......
from __future__ import absolute_import, division, print_function
import os
from lxml import etree
from .models import Cube, Facts, Dimension
class ConfigParser:
def __init__(self, cube_path, file_name='cubes-config.xml'):
self.cube_path = cube_path
self.file_name = file_name
def config_file_exist(self):
return os.path.isfile(os.path.join(self.cube_path, self.file_name))
def xmla_authentication(self):
with open(os.path.join(self.cube_path, self.file_name)) as config_file:
parser = etree.XMLParser()
tree = etree.parse(config_file, parser)
try:
return tree.xpath('/cubes/xmla_authentication')[
0].text == 'True'
except:
return False
def get_cubes_names(self):
with open(os.path.join(self.cube_path, self.file_name)) as config_file:
parser = etree.XMLParser()
tree = etree.parse(config_file, parser)
try:
return {
cube.find('name').text: cube.find('source').text
for cube in tree.xpath('/cubes/cube')
}
except:
raise ('missed name or source tags')
def construct_cubes(self):
if self.config_file_exist():
try:
with open(os.path.join(self.cube_path,
self.file_name)) as config_file:
parser = etree.XMLParser()
tree = etree.parse(config_file, parser)
facts = [
Facts(
table_name=xml_facts.find('table_name').text,
keys={
key.text: key.attrib['ref']
for key in xml_facts.findall(
'keys/column_name')
},
measures=[
mes.text
for mes in xml_facts.findall('measures/name')
]) for xml_facts in tree.xpath('/cubes/cube/facts')
]
dimensions = [
Dimension(
name=xml_dimension.find('name').text,
displayName=xml_dimension.find('displayName').text,
columns=[
column_name.text
for column_name in xml_dimension.findall(
'columns/name')
])
for xml_dimension in tree.xpath(
'/cubes/cube/dimensions/dimension')
]
return [
Cube(
name=xml_cube.find('name').text,
source=xml_cube.find('source').text,
facts=facts,
dimensions=dimensions)
for xml_cube in tree.xpath('/cubes/cube')
]
except:
raise ('Bad configuration in the configuration file')
else:
raise ("Config file don't exist")
import psycopg2 as pg
class MyDB(object):
def __init__(self, username='postgres', password='root', db=None,host='localhost'):
if db is None:
self.connection = pg.connect(
"user={0} password={1}".format(username, password))
else:
try:
self.connection = pg.connect("user={0} password={1} dbname='{2}' host='{3}'".
format(username, password, db,host))
except:
print("can't connect")
def __del__(self):
if hasattr(self, 'connection'):
self.connection.close()
\ No newline at end of file
class Facts:
def __init__(self, **kwargs):
self.__dict__.update(kwargs)
def __str__(self):
return str(self.__dict__)
class Dimension:
def __init__(self, **kwargs):
self.__dict__.update(kwargs)
def __str__(self):
return str(self.__dict__)
class Cube:
def __init__(self, **kwargs):
self.__dict__.update(kwargs)
def __str__(self):
return str(self.__dict__)
from __future__ import absolute_import, division, print_function
from spyne import ComplexModel, Integer, String, Unicode, XmlAttribute
from spyne import ComplexModel, Integer, Unicode, XmlAttribute
from spyne.model.fault import Fault
class Tuple(object):
def __init__(self, Hierarchy, UName, Caption, LName, LNum, DisplayInfo,
PARENT_UNIQUE_NAME, HIERARCHY_UNIQUE_NAME, Value):
self.Hierarchy = Hierarchy
......@@ -92,7 +92,9 @@ class Propertielist(ComplexModel):
class Command(ComplexModel):
_type_info = {'Statement': Unicode,}
_type_info = {
'Statement': Unicode,
}
class ExecuteRequest(ComplexModel):
......@@ -106,6 +108,7 @@ class DiscoverRequest(ComplexModel):
Properties = Propertielist
class DiscoverResponse(ComplexModel):
__namespace__ = "urn:schemas-microsoft-com:xml-analysis:rowset"
root = String
# class AuthenticationError(Fault):
# __namespace__ = 'spyne.examples.authentication'
# faultcode='Client.AuthenticationError',
# faultstring='Invalid authentication request'
# -*- encoding: utf8 -*-
from __future__ import absolute_import, division, print_function
import os
from datetime import datetime
from os.path import expanduser
from lxml import etree
from spyne import AnyXml, Application, ServiceBase, rpc
from spyne.error import InvalidCredentialsError
from spyne.protocol.soap import Soap11
from spyne.server.wsgi import WsgiApplication
from ..services.models import DiscoverRequest, ExecuteRequest, Session
from ..mdx.tools.config_file_parser import ConfigParser
from ..services.models import DiscoverRequest, ExecuteRequest, Session\
# , AuthenticationError
from .xmla_discover_tools import XmlaDiscoverTools
from .xmla_execute_tools import XmlaExecuteTools
from .xmla_execute_xsds import execute_xsd
......@@ -31,10 +39,14 @@ class XmlaProviderService(ServiceBase):
discover_tools = XmlaDiscoverTools()
SessionId = discover_tools.SessionId
@rpc(DiscoverRequest,
_returns=AnyXml,
_body_style="bare",
_out_header=Session)
@rpc(
DiscoverRequest,
_returns=AnyXml,
_body_style="bare",
_out_header=Session,
_throws=InvalidCredentialsError
# _throws=AuthenticationError
)
def Discover(ctx, request):
"""
the first principle function of xmla protocol
......@@ -51,6 +63,19 @@ class XmlaProviderService(ServiceBase):
discover_tools = XmlaProviderService.discover_tools
ctx.out_header = Session(SessionId=str(XmlaProviderService.SessionId))
config_parser = ConfigParser(discover_tools.executer.cube_path)
if config_parser.xmla_authentication():
# TODO call (labster) login function or create login with token (according to labster db)
if ctx.transport.req_env['QUERY_STRING'] != 'admin':
raise InvalidCredentialsError(
fault_string=
'You do not have permission to access this resource',
fault_object=None)
# raise AuthenticationError()
if request.RequestType == "DISCOVER_DATASOURCES":
return discover_tools.discover_datasources_response()
......@@ -82,7 +107,8 @@ class XmlaProviderService(ServiceBase):
return discover_tools.discover_mdschema_measures__response(request)
elif request.RequestType == "MDSCHEMA_DIMENSIONS":
return discover_tools.discover_mdschema_dimensions_response(request)
return discover_tools.discover_mdschema_dimensions_response(
request)
elif request.RequestType == "MDSCHEMA_HIERARCHIES":
return discover_tools.discover_mdschema_hierarchies_response(
......@@ -100,17 +126,19 @@ class XmlaProviderService(ServiceBase):
request)
elif request.RequestType == "MDSCHEMA_PROPERTIES":
return discover_tools.discover_mdschema_properties_response(request)
return discover_tools.discover_mdschema_properties_response(
request)
elif request.RequestType == "MDSCHEMA_MEMBERS":
return discover_tools.discover_mdschema_members_response(request)
# Execute function must take 2 argument ( JUST 2 ! ) Command and Properties
# we encapsulate them in ExecuteRequest object
@rpc(ExecuteRequest,
_returns=AnyXml,
_body_style="bare",
_out_header=Session)
@rpc(
ExecuteRequest,
_returns=AnyXml,
_body_style="bare",
_out_header=Session)
def Execute(ctx, request):
"""
the second principle function of xmla protocol
......@@ -137,6 +165,7 @@ class XmlaProviderService(ServiceBase):
executer.mdx_query = request.Command.Statement
df = executer.execute_mdx()
xmla_tools = XmlaExecuteTools(executer)
return etree.fromstring("""
<return>
<root xmlns="urn:schemas-microsoft-com:xml-analysis:mddataset"
......@@ -175,7 +204,16 @@ class XmlaProviderService(ServiceBase):
xmla_tools.generate_xs0(df),
xmla_tools.generate_slicer_axis(df),
xmla_tools.generate_cell_data(df),
datetime.now().strftime('%Y-%m-%dT%H:%M:%S')))
datetime.now().strftime('%Y-%m-%dT%H:%M:%S')).replace(
'&', '&amp;'))
# Problem:
# An XML parser returns the error “xmlParseEntityRef: noname”
#
# Cause:
# There is a stray ‘&’ (ampersand character) somewhere in the XML text eg. some text & some more text
# Solution
# .replace('&', '&amp;')
application = Application(
......@@ -208,13 +246,19 @@ def start_server(write_on_file=False):
# log to the file
# TODO FIX it with os
if write_on_file:
logging.basicConfig(level=logging.DEBUG, filename="C:\\logs\\xmla.log")
home_directory = expanduser("~")
if not os.path.isdir(os.path.join(home_directory, 'logs')):
os.makedirs(os.path.join(home_directory, 'logs'))
logging.basicConfig(
level=logging.DEBUG,
filename=os.path.join(home_directory, 'logs', 'xmla.log'))
else:
logging.basicConfig(level=logging.DEBUG)
logging.getLogger('spyne.protocol.xml').setLevel(logging.DEBUG)
logging.info("listening to http://127.0.0.1:8000/xmla")
logging.info("wsdl is at: http://localhost:8000/xmla?wsdl")
server = make_server('127.0.0.1', 8000, wsgi_application)
# server = make_server('192.168.101.139', 8000, wsgi_application)
server.serve_forever()
......
# -*- encoding: utf8 -*-
from __future__ import absolute_import, division, print_function
import uuid
......@@ -5,19 +7,14 @@ import uuid
from lxml import etree
from ..mdx.executor.execute import MdxEngine
from .xmla_discover_xsds import (dbschema_catalogs_xsd, dbschema_tables_xsd,
discover_datasources_xsd,
discover_literals_xsd,
discover_preperties_xsd,
discover_schema_rowsets_xsd,
mdschema_cubes_xsd, mdschema_dimensions_xsd,
mdschema_hierarchies_xsd, mdschema_kpis_xsd,
mdschema_levels_xsd, mdschema_measures_xsd,
mdschema_measuresgroups_dimensions_xsd,
mdschema_measuresgroups_xsd,
mdschema_members_xsd,
mdschema_properties_PROPERTIES_xsd,
mdschema_sets_xsd)
from .xmla_discover_xsds import (
dbschema_catalogs_xsd, dbschema_tables_xsd, discover_datasources_xsd,
discover_literals_xsd, discover_preperties_xsd,
discover_schema_rowsets_xsd, mdschema_cubes_xsd, mdschema_dimensions_xsd,
mdschema_hierarchies_xsd, mdschema_kpis_xsd, mdschema_levels_xsd,
mdschema_measures_xsd, mdschema_measuresgroups_dimensions_xsd,
mdschema_measuresgroups_xsd, mdschema_members_xsd,
mdschema_properties_PROPERTIES_xsd, mdschema_sets_xsd)
# TODO clean
......@@ -76,7 +73,6 @@ class XmlaDiscoverTools():
</return>""")
def discover_properties_response(self, request):
def get_props(xsd, PropertyName, PropertyDescription, PropertyType,
PropertyAccessType, IsRequired, Value):
return etree.fromstring("""
......@@ -118,15 +114,15 @@ class XmlaDiscoverTools():
elif request.Restrictions.RestrictionList.PropertyName == 'MdpropMdxSubqueries':
if 'Unspecified' in request.Properties.PropertyList.Catalog:
return get_props(discover_preperties_xsd, 'MdpropMdxSubqueries',
'MdpropMdxSubqueries', 'int', 'Read', 'false',
'15')
return get_props(discover_preperties_xsd,
'MdpropMdxSubqueries', 'MdpropMdxSubqueries',
'int', 'Read', 'false', '15')
if request.Properties.PropertyList.Catalog is not None:
self.change_catalogue(request.Properties.PropertyList.Catalog)
return get_props(discover_preperties_xsd, 'MdpropMdxSubqueries',
'MdpropMdxSubqueries', 'int', 'Read', 'false',
'15')
return get_props(discover_preperties_xsd,
'MdpropMdxSubqueries', 'MdpropMdxSubqueries',
'int', 'Read', 'false', '15')
elif request.Restrictions.RestrictionList.PropertyName == 'MdpropMdxDrillFunctions':
if 'Unspecified' in request.Properties.PropertyList.Catalog:
......@@ -1826,8 +1822,15 @@ class XmlaDiscoverTools():
request.Properties.PropertyList.Catalog)
rows = ""
ord = 1
for tables in self.executer.get_all_tables_names(
ignore_fact=True):
# TODO in another idea, change this
# TO CHANGE NAME DISPLAY THAT EXISTS IN CONFIG FILE
if MdxEngine.dimension_display_name != []:
if tables in MdxEngine.dimension_display_name:
continue
rows += """
<row>
<CATALOG_NAME>{0}</CATALOG_NAME>
......@@ -2264,34 +2267,38 @@ class XmlaDiscoverTools():
# separed_tuple -> [Product].[Product].[Company].[Crazy Development]
# joined -> [Product].[Product].[Company]
last_attribut = ''.join(att for att in separed_tuple[-1]
if att not in '[]').replace(
'&', '&amp;')
return etree.fromstring("""
<return>
<root xmlns="urn:schemas-microsoft-com:xml-analysis:rowset"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
""" + mdschema_members_xsd + """
<row>
<CATALOG_NAME>{0}</CATALOG_NAME>
<CUBE_NAME>{0}</CUBE_NAME>
<DIMENSION_UNIQUE_NAME>{1}</DIMENSION_UNIQUE_NAME>
<HIERARCHY_UNIQUE_NAME>{1}.{1}</HIERARCHY_UNIQUE_NAME>
<LEVEL_UNIQUE_NAME>{2}</LEVEL_UNIQUE_NAME>
<LEVEL_NUMBER>0</LEVEL_NUMBER>
<MEMBER_ORDINAL>0</MEMBER_ORDINAL>
<MEMBER_NAME>{4}</MEMBER_NAME>
<MEMBER_UNIQUE_NAME>{3}</MEMBER_UNIQUE_NAME>
<MEMBER_TYPE>1</MEMBER_TYPE>
<MEMBER_CAPTION>{4}</MEMBER_CAPTION>
<CHILDREN_CARDINALITY>1</CHILDREN_CARDINALITY>
<PARENT_LEVEL>0</PARENT_LEVEL>
<PARENT_COUNT>0</PARENT_COUNT>
<MEMBER_KEY>{4}</MEMBER_KEY>
<IS_PLACEHOLDERMEMBER>false</IS_PLACEHOLDERMEMBER>
<IS_DATAMEMBER>false</IS_DATAMEMBER>
</row>
</root>
</return>
""".format(
self.selected_catalogue, separed_tuple[0], joined,
request.Restrictions.RestrictionList.MEMBER_UNIQUE_NAME,
''.join(c for c in separed_tuple[-1] if c not in '[]')))
<return>
<root xmlns="urn:schemas-microsoft-com:xml-analysis:rowset"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
""" + mdschema_members_xsd + """
<row>
<CATALOG_NAME>{0}</CATALOG_NAME>
<CUBE_NAME>{0}</CUBE_NAME>
<DIMENSION_UNIQUE_NAME>{1}</DIMENSION_UNIQUE_NAME>
<HIERARCHY_UNIQUE_NAME>{1}.{1}</HIERARCHY_UNIQUE_NAME>
<LEVEL_UNIQUE_NAME>{2}</LEVEL_UNIQUE_NAME>
<LEVEL_NUMBER>0</LEVEL_NUMBER>
<MEMBER_ORDINAL>0</MEMBER_ORDINAL>
<MEMBER_NAME>""" + last_attribut +
"""</MEMBER_NAME>
<MEMBER_UNIQUE_NAME>{3}</MEMBER_UNIQUE_NAME>
<MEMBER_TYPE>1</MEMBER_TYPE>
<MEMBER_CAPTION>""" + last_attribut +
"""</MEMBER_CAPTION>
<CHILDREN_CARDINALITY>1</CHILDREN_CARDINALITY>
<PARENT_LEVEL>0</PARENT_LEVEL>
<PARENT_COUNT>0</PARENT_COUNT>
<MEMBER_KEY>""" + last_attribut + """</MEMBER_KEY>
<IS_PLACEHOLDERMEMBER>false</IS_PLACEHOLDERMEMBER>
<IS_DATAMEMBER>false</IS_DATAMEMBER>
</row>
</root>
</return>
""".format(self.selected_catalogue, separed_tuple[0],
joined, request.Restrictions.RestrictionList.
MEMBER_UNIQUE_NAME))
......@@ -325,6 +325,8 @@ class XmlaExecuteTools():
cell_data = ""
index = 0
for value in columns_loop:
if value == -1:
value = ''
cell_data += """
<Cell CellOrdinal="{0}">
<Value xsi:type="xsi:long">{1}</Value>
......
......@@ -4,6 +4,7 @@ pandas<1
lxml==3.6.0 #lxml 3.7 causes problems in windows
spyne<3
treelib<2
psycopg2
# Web
Flask
......
......@@ -4,13 +4,14 @@
#
# pip-compile --output-file requirements.txt requirements.in
#
appdirs==1.4.3 # via setuptools
astroid==1.4.9 # via pylint
backports.functools-lru-cache==1.3 # via pylint
astroid==1.5.2 # via pylint
backports.functools-lru-cache==1.3 # via astroid, pylint
click==6.7 # via flask, pip-tools
configparser==3.5.0 # via flake8, pylint
coverage==4.3.4 # via pytest-cov
enum34==1.1.6 # via flake8
enum34==1.1.6 # via astroid, flake8
first==2.0.1 # via pip-tools
flake8-tidy-imports==1.0.6
flake8==3.3.0
......@@ -19,12 +20,12 @@ Flask-Script==2.0.5
Flask-Session==0.3.0
Flask-SQLAlchemy==2.1
Flask-WTF==0.12
flask==0.12
flask==0.12.1
gprof2dot==2016.10.13
grako==3.19.1
grako==3.22.0
isort==4.2.5
itsdangerous==0.24 # via flask
jinja2==2.9.5 # via flask
jinja2==2.9.6 # via flask
lazy-object-proxy==1.2.2 # via astroid
lxml==3.6.0
markupsafe==1.0 # via jinja2
......@@ -33,26 +34,28 @@ numpy==1.12.1 # via pandas
olap==0.3 # via xmla
packaging==16.8 # via setuptools
pandas==0.19.2
pip-tools==1.8.0
pip-tools==1.9.0
plotly==1.12.9
pluggy==0.4.0 # via tox
prettytable==0.7.2
py-cpuinfo==0.2.7
psycopg2==2.7.1
py-cpuinfo==3.2.0
py==1.4.33 # via pytest, tox
pycodestyle==2.3.1 # via flake8
pyflakes==1.5.0 # via flake8
pylint==1.6.5
pylint==1.7.1
pyparsing==2.2.0 # via packaging
pytest-cov==2.4.0
pytest==3.0.7
python-dateutil==2.6.0 # via pandas
pytz==2016.10 # via pandas, plotly, spyne
pytz==2017.2 # via pandas, plotly, spyne
requests==1.2.3 # via plotly, xmla
six==1.10.0 # via astroid, packaging, pip-tools, plotly, pylint, python-dateutil, setuptools
singledispatch==3.4.0.3 # via astroid, pylint
six==1.10.0 # via astroid, packaging, pip-tools, plotly, pylint, python-dateutil, setuptools, singledispatch
spyne==2.12.14
sqlalchemy==1.0.17
suds==0.4 # via xmla
tox==2.6.0
tox==2.7.0
treelib==1.3.5
virtualenv==15.1.0 # via tox
werkzeug==0.12.1 # via flask, flask-wtf
......@@ -60,9 +63,9 @@ wrapt==1.10.10 # via astroid
wtforms==2.1
XlsxWriter==0.9.3
xmla==0.7.2
yapf==0.15.2
yapf==0.16.1
zope.event==4.2.0 # via zope.schema
zope.interface==4.3.3 # via olap, zope.schema
zope.interface==4.4.0 # via olap, zope.schema
zope.schema==4.4.2 # via olap
# The following packages are considered to be unsafe in a requirements file:
......
# -*- coding: utf-8 -*-
from __future__ import absolute_import, division, print_function
import pip
import os
import zipfile
from os.path import expanduser
from pip.download import PipSession
from pip.req import parse_requirements
from setuptools import find_packages, setup
session = pip.download.PipSession()
_install_requires = pip.req.parse_requirements(
RUNNING_TOX = 'RUNTING_TOX' in os.environ
session = PipSession()
_install_requires = parse_requirements(
'requirements.txt', session=session)
install_requires = [str(ir.req) for ir in _install_requires]
......@@ -29,3 +36,18 @@ setup(
"Programming Language :: Python :: 2.7",
# "Topic :: Business intelligence",
],)
# initiate cubes examples
if RUNNING_TOX:
home_directory = os.environ.get('HOME_DIR')
else:
home_directory = expanduser("~")
if not os.path.isdir(os.path.join(home_directory, 'olapy-data', 'cubes')):
try:
os.makedirs(os.path.join(home_directory, 'olapy-data', 'cubes'))
zip_ref = zipfile.ZipFile('cubes_templates/cubes_temp.zip', 'r')
zip_ref.extractall(os.path.join(home_directory, 'olapy-data', 'cubes'))
zip_ref.close()
except:
raise ('unable to create cubes directory !')
......@@ -5,10 +5,10 @@ envlist = py27
[testenv]
setenv=
RUNTING_TOX=true
HOME_DIR = {homedir}
whitelist_externals=
make
commands=
pip install -q -r requirements.txt
pytest tests
make lint
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment