উত্তর:
আপনি প্রচুর সমাধান ব্যবহার করতে পারেন। আমি ধরে নিলাম আপনি একটি বিদ্যমান টেবিলের উপর ভিত্তি করে একটি নতুন টেবিল তৈরি করতে চান। এটিতে বাবেল কার্যকারিতা জড়িত যেখানে আপনি নতুন টেবিল উত্পাদনকারী কোড ব্লককে সংজ্ঞায়িত করেন। কোড ব্লকগুলি অনেকগুলি ভাষায় হতে পারে এবং আপনি এমনকি সাধারণভাবে সারণী সূত্রে ব্যবহার করার জন্য এই জাতীয় কোড ব্লককে সংজ্ঞায়িত করতে পারেন।
আমি এখানে কেবল ইমাস লিস্প ব্যবহার করে একটি উদাহরণ দেখছি। আপনি গিথুবটিতে আমার উদাহরণ সংগ্রহে আরও অনেক উদাহরণ পেতে পারেন: https://github.com/dfeich/org-babel-ex উদাহরণ
*table filter
#+NAME: table1
| col1 | col2 | col3 | col4 | col5 |
|-------+------+------+------+------|
| row0 | 0 | CH | CH | 0 |
| row1 | 2 | D | CN | 5 |
| row2 | 4 | USA | PL | 10 |
| row3 | 6 | CN | D | 15 |
| row4 | 8 | JP | USA | 20 |
| row5 | 10 | PL | PL | 25 |
| row6 | 12 | USA | JP | 30 |
| row7 | 14 | D | CN | 35 |
| row8 | 16 | PL | USA | 40 |
| row9 | 18 | CN | D | 45 |
| row10 | 20 | CH | CH | 50 |
এখন আমরা একটি ফিল্টার ফাংশন সংজ্ঞায়িত করি যা প্রয়োজনীয় মান সহ একটি নতুন টেবিল তৈরি করে।
# + NAME: আমার ফিল্টার # + BEGIN_SRC এলিজিপ: var tbl = টেবিল 1 ভাল = "ইউএসএ": কলনেম y (টিবিএল সারি জন্য ক্লিপ লুপ যদি (সমান (নবম 3 সারি) ভাল) newtbl মধ্যে সারি সংগ্রহ পরিশেষে newtbl ফিরে) + # END_SRC # + ফলাফল: আমার-ফিল্টার | কল 1 | কল 2 | কল 3 | কল 4 | কল 5 | | ------ + + ------ + + ------ + + ------ + + ------ | | সারি 4 | 8 | জেপি | ইউএসএ | 20 | | সারি 8 | 16 | পিএল | ইউএসএ | 40 |
Org- মোড CALL সিনট্যাক্সের সাহায্যেও আমি এই ফাংশনটি ব্যবহার করতে পারি
# + কল: আমার-ফিল্টার (tbl = টেবিল 1, ভাল = "সিএন"): কলনেম y + # ফলাফল: | কল 1 | কল 2 | কল 3 | কল 4 | কল 5 | | ------ + + ------ + + ------ + + ------ + + ------ | | সারি 1 | 2 | ডি | সিএন | 5 | | সারি 7 | 14 | ডি | সিএন | 35 |
আমি এখানে এসকিউএলাইট পদ্ধতিটিও দেখিয়েছি যেখানে আমি আপনার সমস্ত সারিগুলিকে ফিল্টারিংয়ের আসল প্রয়োজনীয়তাটি ব্যবহার করি যেখানে কলাম 3 বা 4 এ স্ট্রিং রয়েছে the স্ক্লাইট পদ্ধতির একটি ছোটখাটো অসুবিধা হ'ল আমাদের টেবিলে পড়ার এবং তৈরি করার জন্য কিছু বয়লারপ্লিট কোড রয়েছে একটি এসকিউএলাইট ডিবি।
# + NAME: আমার ফিল্টার 2 # + BEGIN_SRC স্ক্লাইট: db table1.sqlite: var tbl = table1 val = "USA": নামগুলি হ্যাঁ টেবিল 1 বিদ্যমান থাকলে ড্রপ টেবিল; সারণী সারণি 1 তৈরি করুন (কল 1 ভর্চার, কল 2 সংবেদী, কল 3 ভ্যাচার, কল 4 ভোচার, কল 5 ইনটিগার); .আইপোর্ট "$ tbl" টেবিল 1 টেবিল 1 থেকে * নির্বাচন করুন যেখানে কল 3 = '$ ভাল' বা কল 4 = '$ ভাল'; + # END_SRC + # ফলাফল: | কল 1 | কল 2 | কল 3 | কল 4 | কল 5 | | ------ + + ------ + + ------ + + ------ + + ------ | | সারি 2 | 4 | ইউএসএ | পিএল | 10 | | সারি 4 | 8 | জেপি | ইউএসএ | 20 | | সারি 6 | 12 | ইউএসএ | জেপি | 30 | | সারি 8 | 16 | পিএল | ইউএসএ | 40 | # + কল: আমার-ফিল্টার 2 (টিবিএল = টেবিল 1, ভাল = "সিএন"): কলনেমগুলি y + # ফলাফল: | কল 1 | কল 2 | কল 3 | কল 4 | কল 5 | | ------ + + ------ + + ------ + + ------ + + ------ | | সারি 1 | 2 | ডি | সিএন | 5 | | সারি 3 | 6 | সিএন | ডি | 15 | | সারি 7 | 14 | ডি | সিএন | 35 | | সারি 9 | 18 | সিএন | ডি | 45 |
আশা করি আমি আপনার প্রশ্নটি সঠিকভাবে বুঝতে পেরেছি এবং লিঙ্কগুলি আপনাকে সমাধানের অন্যান্য প্রকারগুলি খুঁজে পেতে সহায়তা করে।
symbol-name
ইমাস লিসপ সমাধানটিতে সাফল্যের জন্য আমাকে ফাংশনটি মুছতে হয়েছিল। শুধু উল্লেখ করার জন্য।
আমি ব্যবহার কুই - ডেটা হিসাবে পাঠ্য , এবং আমার 2 ফাংশন library-of-babel
( কনফারেন্স-উদাহরণ ) একটি সহজ প্রদান SQL কোয়েরি ইন্টারফেস / সংস্থা-ইনলাইন টেবিল ও বহিস্থিত যোগদানের .*sv
ফাইল।
হুডের নীচে, q
( পাইথনের মাধ্যমে ) স্কেলাইটও ব্যবহার করে , যেমন @dfeich এর দ্বিতীয় পদ্ধতির মতো, তবে প্রতিটি স্বতন্ত্র উত্স সারণীতে নির্দিষ্ট শোরগোলের বয়লারপ্লেট-কোডের প্রয়োজনীয়তা সরিয়ে দেয় । এটি কেবলমাত্র সিস্টেম প্যাকেজ ম্যানেজারের মাধ্যমে একবার ইনস্টল করা দরকার python-q-text-as-data
।
আপনার বাবেলের লাইব্রেরিটি নীচের 2 টি কার্যক্রমে লোড হয়ে গেলে, #+Call:
এসকিউএল কোয়েরিগুলি ব্যবহার করার জন্য আপনার org-file এ কেবল নীচের মতো দরকার ।
#+CALL: Q[:stdin table1](where="col4=='USA'")
#+RESULTS:
| col1 | col2 | col3 | col4 | col5 |
|------+------+------+------+------|
| row4 | 8 | JP | USA | 20 |
| row8 | 16 | PL | USA | 40 |
এটি আউটপুট SELECT $select FROM $from WHERE $where
থেকে সমস্ত কলাম নির্বাচন করার জন্য পরামিতিগুলির ডিফল্ট হিসাবে কমান্ড-লাইন তৈরি করে stdin
।
আপনার গ্রন্থাগারে যুক্ত করার জন্য কোডগুলি হ'ল:
** Add a header Row to tables
#+name: addhdr
#+begin_src emacs-lisp :var tbl=""
(cons (car tbl) (cons 'hline (cdr tbl)))
#+end_src
** Filtering with SQL
#+NAME: Q
#+HEADER: :results value table
#+HEADER: :var callOptsStd="-H -O -t" callOpts=""
#+HEADER: :post addhdr(*this*)
#+BEGIN_SRC shell :stdin Ethers :var select="*" from="-" where="1"
q $callOptsStd $callOpts "Select $select from $from where $where"
#+END_SRC