Theory
આચાર્યને એ Excel માં જોઈએ છે
ResultDesk નો નબળા વિષયનો અહેવાલ (એકમ 1 ની તમારી GROUP BY ની query) બધાને પ્રભાવિત કરી ગયો. આચાર્યની આગલી માંગણી: "મને એ email કરો, હું Excel માં ખોલીશ."
Excel તમારા terminal પરથી SQL ના પરિણામની જાળી વાંચતું નથી. એ CSV વાંચે છે.
ગયા પાઠમાં data CSV માંથી અંદર વહ્યો; આજે એ બહાર વહે છે. એ જ shell, ચાર ગોઠવણ, અને અહીં સુખદ આશ્ચર્ય છે: તમે ફક્ત કોષ્ટકો નહીં, પણ તમે લખી શકો એવી કોઈ પણ query નું પરિણામ નિકાસ કરી શકો છો.
Theory
Printer ને બીજી દિશામાં વાળવું
અત્યાર સુધી, દરેક SELECT તમારા પડદા પર છપાતું હતું: shell નું default printer.
નિકાસ એટલે ખાલી એ printer ને વાળવું: .mode csv કાગળનું સ્વરૂપ પસંદ કરે છે, .headers on ખાનાંનાં નામ પહેલી લીટી તરીકે છાપે છે, .output result.csv પડદાની જગ્યાએ file મૂકે છે. પછી તમે SELECT હંમેશની જેમ જ ચલાવો છો, અને "છપાયેલું" file માં ઊતરે છે. પૂરું થાય ત્યારે printer પાછું બદલી નાખો.
Follow along
નિકાસનો પ્રમાણભૂત ક્રમ (ક્રમ મહત્ત્વનો છે)
- .headers on File ની પહેલી લીટી ખાનાંનાં નામ વહન કરશે: Excel અને pandas એની અપેક્ષા રાખે છે.
- .mode csv Output નું સ્વરૂપ અલ્પવિરામથી છૂટું પડેલું બને છે (મૂલ્યોમાં અલ્પવિરામ હોય ત્યાં બરાબર અવતરણચિહ્ન સાથે).
- .output weak_subjects.csv અહીંથી, પરિણામ પડદા પર નહીં, file માં જાય છે.
- SELECT ચલાવો SELECT subject, AVG(score) AS average FROM marks GROUP BY subject HAVING AVG(score) < 50; પરિણામ જ file નું શરીર છે.
- .output stdout Printer ને પાછું પડદા તરફ તાકો. આ છોડી દો અને તમારા આગલા કલાકની queries file માં અદૃશ્ય થાય છે.
Theory
તમે queries નિકાસ કરો છો, ફક્ત કોષ્ટકો નહીં
આખું કોષ્ટક એ ફક્ત સૌથી સાદી query છે: SELECT * FROM marks;
પણ ખરી તાકાત: એકમ 1 એ તમને શીખવેલું બધું એકસરખું નિકાસ થાય છે. students અને marks નું join. CASE ના grade ના પટ્ટા. HAVING થી ગાળેલી સરેરાશો. Query લખો, અને એનું પરિણામ CSV બને છે.
એનો અર્થ છે કે અહેવાલોનો આકાર પહેલાં SQL માં ઘડાય છે (ગાળો, જોડો, સારાંશ કરો), નિકાસ પછી. પછીથી Excel માં data નો આકાર ઘડવો એ શિખાઉનો રસ્તો છે; તમારી પાસે database છે.
Quiz
એક student .headers on વગર નિકાસ કરે છે. આચાર્ય CSV ને Excel માં ખોલે છે. Spreadsheet ની **પહેલી હરોળ** શું દેખાડે છે?
- પહેલી data ની હરોળ (દા.ત. DBMS, 43.5), જેને Excel પછી ખાનાંનાં શીર્ષક ગણે છે
- જ્યાં header હોવું જોઈએ ત્યાં ખાલી ખાનાં
- SQL ની query નું લખાણ
- કશું નહીં: headers વગર file ખૂલતી નથી
Show the answer
પહેલી data ની હરોળ (દા.ત. DBMS, 43.5), જેને Excel પછી ખાનાંનાં શીર્ષક ગણે છે
.headers on વગર, file સીધી data થી શરૂ થાય છે, એટલે પહેલી નોંધ શીર્ષકની હરોળનો ડોળ કરે છે: પછી Excel માં ક્રમ અને charts બધું ખોટા લેબલ સાથે આપે છે, અને pandas નું read_csv એ જ ભૂલ કરે છે. File બરાબર ખૂલે છે (વિકલ્પ D ખોટો છે) અને SQL નું લખાણ ક્યારેય output ની files માં જતું નથી. એક ભૂલાયેલી ગોઠવણ, એક સૂક્ષ્મ રીતે ખોટો અહેવાલ: એટલે જ આ ક્રમ ચાર પગલાં તરીકે ઘૂંટાવાય છે.
Think first
Dump કે CSV? મંઝિલ પ્રમાણે પસંદ કરો
બે માંગણી: (1) પરીક્ષા વિભાગને એવી file માં marks જોઈએ જેને એ આવતા વર્ષે પોતાના SQLite ના database માં ફરી બાંધી શકે; (2) આચાર્યને Excel માં chart બનાવવા શહેર દીઠ સરેરાશ scores જોઈએ. Tap કરતાં પહેલાં: દરેકને કઈ નિકાસની પદ્ધતિ બંધબેસે, અને કેમ?
Show the answer
(1) .dump marks: એમને ફરી ચલાવી શકાય એવા SQL તરીકે માળખું વત્તા data જોઈએ: database થી database નું સ્થાનાંતર.
(2) GROUP BY ની query નો CSV નિકાસ: ફક્ત data, spreadsheet માટે તૈયાર, CREATE TABLE ના ઘોંઘાટ વગર.
નિયમ: મંઝિલ SQLite હોય ત્યારે dump, મંઝિલ spreadsheet, pandas કે માણસ હોય ત્યારે CSV. પરીક્ષાઓ આને "'.dump' અને CSV નિકાસ વચ્ચે ભેદ પાડો" તરીકે મૂકે છે: મંઝિલ અને સામગ્રી (SQL સામે ફક્ત data) થી જવાબ આપો.
Watch out
ટકી રહેતી ગોઠવણના બે ફાંદા
Shell તમારી ગોઠવણ બદલાય ત્યાં સુધી રાખે છે:
- .output file પર રહી જાય તો પછીનું દરેક પરિણામ ગળી જાય છે: હંમેશા stdout પર પાછા ફરો.
- .mode csv ચાલુ રહી જાય તો તમારું આગલું interactive SELECT ગોઠવાયેલાં ખાનાંને બદલે ખુલ્લા અલ્પવિરામ છાપે છે: પડદા પર વાંચવા .mode column થી પાછા બદલો.
પહેલાં ગોઠવણ, પછી query, ત્રીજું સફાઈ: એ ક્રમ જ પરીક્ષાને જોઈતો જવાબ છે.
Theory
આ જ file એકમ 4 માં પાછી આવે છે
weak_subjects.csv સાચવી રાખો: એકમ 4 માં, pandas એને pd.read_csv() થી પાછી વાંચશે અને એકમ 5 માં matplotlib થી એનો આલેખ દોરશે. આ વિષયનું આખું વર્તુળ: SQL data નો આકાર ઘડે છે, CSV એને વહન કરે છે, Python એનું વિશ્લેષણ કરીને charts બનાવે છે. તમે હવે CSV ના પુલના બંને અડધિયા બાંધી લીધા છે; હવે Python ચલાવવાનું સંભાળે છે.
Summary
Key takeaways
- નિકાસનો ક્રમ: .headers on, .mode csv, .output file.csv, SELECT ચલાવો, .output stdout.
- કોઈ પણ query નું પરિણામ નિકાસ થાય છે: joins, GROUP BY ના સારાંશ, CASE ના પટ્ટા, ફક્ત આખાં કોષ્ટકો નહીં.
- .headers on મહત્ત્વનું છે: એના વગર, પહેલી data ની હરોળ આગળ જતાં ખાનાંનાં શીર્ષકનો ડોળ કરે છે.
- Dump સામે CSV: SQLite માં ફરી બાંધવા SQL સામે spreadsheets અને pandas માટે ફક્ત data.
- Shell ની ગોઠવણ ટકે છે: નિકાસ પછી .output ને stdout અને .mode ને column પર પાછું લાવો.
- Memory hook: printer વાળો, query છાપો, printer પાછું વાળો.