មាតិកា
ប្រសិនបើអ្នកយ៉ាងហោចណាស់ធ្លាប់ស្គាល់ពាក្យធម្មតាបន្តិច នោះអ្នកមិនចាំបាច់ផ្សព្វផ្សាយវាទេ។ ប្រសិនបើអ្នកមិនសូវនៅក្នុងប្រធានបទទេ កន្សោមធម្មតា (Regular Expressions = RegExp = "regexps" = "regulars") គឺជាភាសាដែលដោយប្រើតួអក្សរ និងច្បាប់ពិសេស ខ្សែអក្សររងចាំបាច់ត្រូវបានស្វែងរកក្នុងអត្ថបទ ពួកគេត្រូវបានស្រង់ចេញ ឬជំនួសដោយអត្ថបទផ្សេងទៀត។ នេះគឺជាឧបករណ៍ដ៏មានអនុភាព និងស្រស់ស្អាត ដែលជាលំដាប់នៃទំហំធំជាងវិធីផ្សេងទៀតទាំងអស់នៃការធ្វើការជាមួយអត្ថបទ។
ខ្ញុំបានពិពណ៌នាលម្អិតរួចហើយ និងជាមួយនឹងឧទាហរណ៍មួយចំនួនពីជីវិតអំពីរបៀបដែលអ្នកអាចបន្ថែមការគាំទ្រកន្សោមធម្មតាទៅ Excel ដោយប្រើម៉ាក្រូសាមញ្ញ - ប្រសិនបើអ្នកមិនទាន់បានអានអត្ថបទនេះទេ ខ្ញុំសូមណែនាំឱ្យអ្នកអានវាមុនពេលបន្ត។ អ្នកនឹងរកឃើញរបស់ថ្មីជាច្រើនខ្ញុំធានា🙂
ទោះយ៉ាងណាក៏ដោយ សំណួរនៅតែបើកចំហ - របៀបបន្ថែមសមត្ថភាពក្នុងការប្រើកន្សោមធម្មតានៅក្នុង Power Query? ជាការពិតណាស់ Power Query គឺល្អដោយខ្លួនឯង ហើយអាចធ្វើបានច្រើនជាមួយអត្ថបទ (កាត់ បិទស្អិត សម្អាត។ល។) ប៉ុន្តែប្រសិនបើអ្នកអាចឆ្លងកាត់វាដោយប្រើថាមពលនៃកន្សោមធម្មតា វាគ្រាន់តែជាគ្រាប់បែកប៉ុណ្ណោះ។
ជាអកុសល មិនមានមុខងារដែលភ្ជាប់មកជាមួយសម្រាប់ធ្វើការជាមួយ RegExps ក្នុង Power Query ហើយជំនួយ និងជំនួយបច្ចេកទេសផ្លូវការរបស់ Microsoft ឆ្លើយសំណួរនេះក្នុងន័យអវិជ្ជមាន។ ទោះយ៉ាងណាក៏ដោយ មានវិធីមួយជុំវិញការកំណត់នេះ🙂
ខ្លឹមសារនៃវិធីសាស្ត្រ
គំនិតសំខាន់គឺសាមញ្ញដើម្បីបង្ខូចកេរ្តិ៍ឈ្មោះ។
នៅក្នុងបញ្ជីនៃសមត្ថភាព Power Query ដែលភ្ជាប់មកជាមួយ មានមុខងារមួយ។ គេហទំព័រ. ការពិពណ៌នាអំពីមុខងារនេះនៅលើគេហទំព័រជំនួយរបស់ Microsoft ផ្លូវការគឺមានភាពសង្ខេបបំផុត៖
បកប្រែ នេះអាចជា៖ "ត្រឡប់មាតិកានៃឯកសារ HTML ដែលបំបែកទៅជារចនាសម្ព័ន្ធសមាសធាតុរបស់វា ក៏ដូចជាតំណាងនៃឯកសារពេញលេញ និងតួរបស់វាបន្ទាប់ពីស្លាកត្រូវបានដកចេញ។" ការពិពណ៌នាដូច្នេះដោយស្មោះត្រង់។
ជាធម្មតាមុខងារនេះត្រូវបានប្រើនៅពេលនាំចូលទិន្នន័យពីគេហទំព័រ ហើយត្រូវបានជំនួសដោយស្វ័យប្រវត្តិ ឧទាហរណ៍នៅពេលយើងជ្រើសរើសនៅលើផ្ទាំង ទិន្នន័យ ពាក្យបញ្ជា ពីអ៊ីនធឺណិត (ទិន្នន័យ - ពីគេហទំព័រ). យើងផ្តល់ឱ្យមុខងារនូវទំព័របណ្ដាញជាអាគុយម៉ង់ ហើយវាបញ្ជូនមាតិការបស់វាមកយើងក្នុងទម្រង់ជាតារាង ដោយបានលុបស្លាកទាំងអស់ពីមុនមក។
អ្វីដែលជំនួយមិននិយាយគឺបន្ថែមលើភាសា HTML markup មុខងារ គេហទំព័រ គាំទ្រស្គ្រីប JavaScriptដែលឥឡូវនេះមានគ្រប់ទីកន្លែងនៅលើគេហទំព័រនៅលើអ៊ីនធឺណិត។ ហើយ JavaScript តែងតែអាចធ្វើការជាមួយកន្សោមធម្មតា និងមានមុខងារភ្ជាប់មកជាមួយសម្រាប់ RegExps! ដូច្នេះ ដើម្បីអនុវត្តកន្សោមធម្មតានៅក្នុង Power Query យើងនឹងត្រូវការផ្តល់មុខងារ Web.Page ជាអាគុយម៉ង់មួយចំពោះកម្មវិធី JavaScript តូចមួយដែលនឹងធ្វើការងារទាំងអស់សម្រាប់ Power Query ។
អ្វីដែលវាមើលទៅដូចនៅក្នុង JavaScript សុទ្ធ
មានមេរៀនលម្អិតជាច្រើនអំពីការធ្វើការជាមួយកន្សោមធម្មតានៅក្នុង JavaScript នៅលើអ៊ីនធឺណិត (ឧទាហរណ៍មួយ, ពីរ) ។
និយាយឱ្យខ្លី និងសាមញ្ញ កូដ JavaScript នឹងមើលទៅដូចនេះ៖
នៅទីនេះ:
- var str = 'បង់វិក្កយបត្រ 123 និង 789 សម្រាប់សាច់ក្រក'; - បង្កើតអថេរ str ហើយកំណត់វាជាអត្ថបទប្រភពដែលយើងនឹងវិភាគ។
- លំនាំ var = /d+/gi; - បង្កើតកន្សោមធម្មតា ហើយដាក់វានៅក្នុងអថេរ លំនាំ.
កន្សោមចាប់ផ្តើមដោយសញ្ញា (/) ។
កន្សោមដោយខ្លួនវានៅទីនេះឧទាហរណ៍គឺ d+ តំណាងឱ្យលំដាប់នៃលេខណាមួយ។
តាមរយៈប្រភាគបន្ទាប់ពីកន្សោម មានប៉ារ៉ាម៉ែត្រស្វែងរកបន្ថែម (អ្នកកែប្រែ) - ពួកគេអាចត្រូវបានបញ្ជាក់តាមលំដាប់ណាមួយ៖
- g – មានន័យថា ការស្វែងរកជាសកល ពោលគឺបន្ទាប់ពីស្វែងរកការផ្គូផ្គង អ្នកមិនគួរបញ្ឈប់ឡើយ ប៉ុន្តែបន្តការស្វែងរករហូតដល់ចុងបញ្ចប់នៃអត្ថបទ។ ប្រសិនបើការកែប្រែនេះមិនត្រូវបានកំណត់ទេ នោះស្គ្រីបរបស់យើងនឹងត្រឡប់តែការផ្គូផ្គងដំបូងប៉ុណ្ណោះ (123)
- i - ស្វែងរកដោយមិនគិតពីករណីអក្សរ
- m - ការស្វែងរកច្រើនបន្ទាត់ (ប្រើនៅពេលដែលអត្ថបទប្រភពត្រូវបានបែងចែកទៅជាបន្ទាត់ជាច្រើន)
- var លទ្ធផល = str.match(pattern).join(';'); - ធ្វើការស្វែងរកក្នុងអត្ថបទប្រភព (str) ដោយកន្សោមធម្មតាដែលបានផ្តល់ឱ្យ (លំនាំ) ហើយដាក់លទ្ធផលក្នុងអថេរ លទ្ធផលភ្ជាប់ពួកវាជាមួយសញ្ញាក្បៀសដោយប្រើពាក្យបញ្ជា ចូលរួម
- document.write(លទ្ធផល); - បង្ហាញមាតិកានៃអថេរលទ្ធផល
សូមចំណាំផងដែរថា ខ្សែអក្សរ (មិនរាប់បញ្ចូលកន្សោមធម្មតា) នៅក្នុង JavaScript ត្រូវបានរុំព័ទ្ធក្នុង apostrophes មិនមែនដកស្រង់ដូចនៅក្នុង Power Query ឬ VBA នោះទេ។
នៅលទ្ធផល ស្គ្រីបនេះនឹងផ្តល់ឱ្យយើងនូវលទ្ធផលជាលេខទាំងអស់ដែលមាននៅក្នុងអត្ថបទប្រភព៖
123, 789
វគ្គខ្លី JavaScript បានបញ្ចប់ហើយ អរគុណអ្នកទាំងអស់គ្នា។ សង្ឃឹមថាអ្នកទទួលបានតក្កវិជ្ជា🙂
វានៅសល់ដើម្បីផ្ទេរសំណង់នេះទៅ Power Query ។
ស្វែងរក និងស្រង់មុខងារអត្ថបទដោយការបញ្ចេញមតិធម្មតានៅក្នុងសំណួរថាមពល
យើងធ្វើដូចខាងក្រោមៈ
1. បើក Excel ហើយបង្កើត Power Query ទទេថ្មីមួយនៅក្នុងផ្ទាំង ទិន្នន័យ - ទទួលបានទិន្នន័យ / បង្កើតសំណើ - ពីប្រភពផ្សេងទៀត - សំណើទទេ (ទិន្នន័យ — ទទួលបានទិន្នន័យ / សំណួរថ្មី — ពីប្រភពផ្សេងទៀត — សំណួរទទេ). ប្រសិនបើអ្នកមានកំណែចាស់នៃ Excel 2010-2013 និង Power Query អ្នកមិនមានភ្ជាប់មកជាមួយទេ ប៉ុន្តែត្រូវបានដំឡើងជា add-in ដាច់ដោយឡែក នោះអ្វីៗទាំងអស់នេះនឹងមាននៅលើផ្ទាំង សំណួរថាមពលនិងមិន ទិន្នន័យ.
2. នៅក្នុងបង្អួចទទេនៃកម្មវិធីនិពន្ធសំណួរដែលបើក ក្នុងបន្ទះខាងស្តាំ បញ្ចូលឈ្មោះមុខងារនាពេលអនាគតរបស់យើងភ្លាមៗ (ឧទាហរណ៍ fxRegExpExtract)
3. តោះទៅផ្ទាំង មើល - កម្មវិធីនិពន្ធកម្រិតខ្ពស់ (មើល - កម្មវិធីនិពន្ធកម្រិតខ្ពស់)យើងលុបកូដ M ទាំងមូលនៃសំណើទទេ ហើយបិទភ្ជាប់កូដនៃមុខងារទំនើបរបស់យើងនៅទីនោះ៖
មើលដៃរបស់អ្នក៖
នៅក្នុងជួរទីមួយ យើងនិយាយថាមុខងាររបស់យើងនឹងមានអាគុយម៉ង់អត្ថបទបី៖ txt - អត្ថបទដើមត្រូវបានវិភាគ regex - លំនាំកន្សោមធម្មតា, ដេលីម - តួអក្សរកំណត់ព្រំដែនសម្រាប់បង្ហាញលទ្ធផល។
បន្ទាប់យើងហៅមុខងារ គេហទំព័របង្កើតកូដ JavaScript ដែលបានពិពណ៌នាខាងលើនៅក្នុងអាគុយម៉ង់របស់វា។ យើងបិទភ្ជាប់ និងជំនួសអាគុយម៉ង់អថេររបស់យើងទៅក្នុងកូដ។
បំណែក៖
[ទិន្នន័យ]{0}[Children]{0}[Children]{1}[Text]{0}
… គឺចាំបាច់ដើម្បី “ធ្លាក់ចូល” ទៅក្នុងតារាងជាមួយនឹងលទ្ធផលដែលយើងត្រូវការ។ ចំណុចសំខាន់គឺថាមុខងារ គេហទំព័រ ជាលទ្ធផល វាបង្កើតតារាងដាក់គ្នាជាច្រើនដែលធ្វើឡើងវិញនូវរចនាសម្ព័ន្ធនៃគេហទំព័រមួយ។ ដោយគ្មានបំណែកនៃ M-code នេះ មុខងាររបស់យើងនឹងបញ្ចេញវា៖
… ហើយយើងនឹងត្រូវចុចពាក្យច្រើនដង តារាងជាបន្តបន្ទាប់ "ធ្លាក់ចូល" ទៅក្នុងតារាងដែលមានកូននៅក្នុងជួរឈរ កុមារ:
ជំនួសឱ្យការដកស្រង់ទាំងអស់នេះ យើងបង្ហាញភ្លាមៗនៅក្នុងកូដនៃមុខងាររបស់យើងដែលដាក់តារាង និងជួរឈរ (អត្ថបទ) យើងត្រូវការ។
តាមពិតនៅទីនេះ អាថ៌កំបាំងទាំងអស់។ វានៅសល់ដើម្បីចុចប៊ូតុង បញ្ចប់ នៅក្នុងបង្អួច កម្មវិធីនិពន្ធកម្រិតខ្ពស់ដែលជាកន្លែងដែលយើងបានបញ្ចូលលេខកូដរបស់យើង ហើយអ្នកអាចបន្តទៅអ្វីដែលឆ្ងាញ់បំផុត សាកល្បងមុខងាររបស់យើងនៅកន្លែងធ្វើការ។
នេះគឺជាឧទាហរណ៍មួយចំនួននៃគ្រាប់ពូជ។
ឧទាហរណ៍ 1. ការទាញយកលេខគណនី និងកាលបរិច្ឆេទពីការពិពណ៌នាការទូទាត់
យើងមានរបាយការណ៍ធនាគារជាមួយនឹងការពិពណ៌នា (គោលបំណង) នៃការទូទាត់ ដែលអ្នកត្រូវដកលេខ និងកាលបរិច្ឆេទនៃវិក្កយបត្រដែលបានបង់ទៅជាជួរដាច់ដោយឡែក៖
យើងផ្ទុកតារាងទៅក្នុង Power Query តាមវិធីស្តង់ដារ ទិន្នន័យ - ពីតារាង/ជួរ (ទិន្នន័យ - ពី Tអាច/Rទេវតា).
បន្ទាប់មកយើងបន្ថែមជួរឈរគណនាជាមួយមុខងាររបស់យើងតាមរយៈ បន្ថែមជួរឈរ - ហៅមុខងារផ្ទាល់ខ្លួន (បន្ថែមជួរ - ហៅមុខងារផ្ទាល់ខ្លួន) ហើយបញ្ចូលអាគុយម៉ង់របស់វា៖
ជាកន្សោមធម្មតា (អាគុយម៉ង់ regex) គំរូដែលយើងប្រើ៖
(ឃ{3,5}|d{2}.d{2}.d{4})
… បកប្រែជាភាសាមនុស្សមានន័យថា៖
លេខពី 3 ទៅ 5 ខ្ទង់ (លេខគណនី)
or
បំណែកនៃទម្រង់ "លេខ 2 ប៊ីត - ចំណុច - លេខ 2 ប៊ីត - ចំណុច - លេខ 4 ប៊ីត"នោះគឺកាលបរិច្ឆេទនៃទម្រង់ DD.MM.YYYY ។
ជាតួអក្សរកំណត់ព្រំដែន (អាគុយម៉ង់ ដេលីម) បញ្ចូលសញ្ញាក្បៀស។
បន្ទាប់ពីចុចលើ OK មុខងារវេទមន្តរបស់យើងវិភាគទិន្នន័យដំបូងទាំងអស់ដោយយោងទៅតាមកន្សោមធម្មតារបស់យើង ហើយបង្កើតជាជួរសម្រាប់យើងជាមួយនឹងលេខដែលបានរកឃើញ និងកាលបរិច្ឆេទនៃវិក្កយបត្រ៖
វានៅសល់ដើម្បីបំបែកវាដោយសញ្ញាក្បៀសដោយប្រើពាក្យបញ្ជា ទំព័រដើម — បំបែកជួរឈរ — តាមអ្នកកំណត់ (ទំព័រដើម — បំបែកជួរឈរ — តាមអ្នកកំណត់) ហើយយើងទទួលបានអ្វីដែលយើងចង់បាន៖
សម្រស់!
ឧទាហរណ៍ទី 2៖ ស្រង់អាសយដ្ឋានអ៊ីមែលចេញពីអត្ថបទ
ឧបមាថាយើងមានតារាងខាងក្រោមជាទិន្នន័យដំបូង៖
… ពីកន្លែងដែលយើងត្រូវដកអាសយដ្ឋានអ៊ីមែលដែលបានរកឃើញនៅទីនោះ (សម្រាប់ភាពច្បាស់លាស់ ខ្ញុំបានបន្លិចពួកវាជាពណ៌ក្រហមនៅក្នុងអត្ថបទ)។
ដូចក្នុងឧទាហរណ៍មុន យើងផ្ទុកតារាងទៅក្នុង Power Query តាមវិធីស្តង់ដារតាមរយៈ ទិន្នន័យ - ពីតារាង/ជួរ (ទិន្នន័យ - ពី Tអាច/Rទេវតា).
បន្ទាប់មកយើងបន្ថែមជួរឈរគណនាជាមួយមុខងាររបស់យើងតាមរយៈ បន្ថែមជួរឈរ - ហៅមុខងារផ្ទាល់ខ្លួន (បន្ថែមជួរ - ហៅមុខងារផ្ទាល់ខ្លួន) ហើយបញ្ចូលអាគុយម៉ង់របស់វា៖
ការញែកអាសយដ្ឋានអ៊ីមែលគឺជាកិច្ចការពិបាកជាង ហើយមានកន្សោមធម្មតាជាច្រើននៃកម្រិតខុសគ្នានៃសុបិន្តអាក្រក់ដើម្បីដោះស្រាយវា។ ខ្ញុំបានប្រើជម្រើសសាមញ្ញមួយ - មិនល្អទេ ប៉ុន្តែអាចធ្វើការបានក្នុងករណីភាគច្រើន៖
[w|.|-]*@w*.[w|.]*
ជាសញ្ញាបំបែក (ដេលីម) អ្នកអាចបញ្ចូលសញ្ញាក្បៀស និងចន្លោះ។
ចុចលើ OK ហើយយើងទទួលបានជួរឈរដែលមានអាសយដ្ឋានអ៊ីមែលដកស្រង់ចេញពីអត្ថបទដើម "បបរ"៖
វេទមន្ត!
PS
ដូចពាក្យពោលថា “គ្មានអ្វីល្អណាដែលមិនអាចធ្វើឲ្យកាន់តែប្រសើរជាងនេះបានឡើយ”។ Power Query មានភាពត្រជាក់ដោយខ្លួនវា ហើយនៅពេលដែលរួមបញ្ចូលជាមួយកន្សោមធម្មតា វាផ្តល់ឱ្យយើងនូវថាមពល និងភាពបត់បែនដែលមិនប្រាកដប្រជាទាំងស្រុងក្នុងការដំណើរការទិន្នន័យអត្ថបទណាមួយ។ ខ្ញុំសង្ឃឹមថាថ្ងៃណាមួយក្រុមហ៊ុន Microsoft នឹងបន្ថែមការគាំទ្រ RegExp នៅក្នុងការអាប់ដេត Power Query និង Power BI ហើយការរាំខាងលើទាំងអស់ជាមួយនឹង tambourine នឹងក្លាយជារឿងអតីតកាល។ មែនហើយ សម្រាប់ពេលនេះ។
ខ្ញុំក៏ចង់បន្ថែមថាវាងាយស្រួលក្នុងការលេងជាមួយកន្សោមធម្មតានៅលើគេហទំព័រ https://regexr.com/ – ត្រឹមត្រូវនៅក្នុងកម្មវិធីនិពន្ធអនឡាញ។ នៅទីនោះនៅក្នុងផ្នែក គំរូសហគមន៍ មានរដូវទៀងទាត់ដែលត្រៀមរួចជាស្រេចជាច្រើនសម្រាប់គ្រប់ឱកាសទាំងអស់។ ការពិសោធន៍ - ថាមពលទាំងអស់នៃកន្សោមធម្មតាគឺឥឡូវនេះនៅក្នុងសេវាកម្មរបស់អ្នកនៅក្នុង Power Query!
- តើអ្វីទៅជាកន្សោមធម្មតា (RegExp) និងរបៀបប្រើពួកវាក្នុង Excel
- ការស្វែងរកអត្ថបទមិនច្បាស់នៅក្នុង Power Query
- ការប្រមូលផ្តុំតារាងពីឯកសារផ្សេងៗដោយប្រើ Power Query