List.Accumulate ශ්‍රිතය සමඟ බල විමසුමේ තොග පෙළ ප්‍රතිස්ථාපනය

සූත්‍ර සමඟ විමර්ශන ලැයිස්තුවට අනුව පෙළ ඉක්මනින් සහ තොග වශයෙන් ප්‍රතිස්ථාපනය කරන්නේ කෙසේද - අපි දැනටමත් එය වර්ග කර ඇත. දැන් බලමු Power Query එකෙන් ඒක කරන්න.

බොහෝ විට සිදු වන පරිදි ඉටු කරන්න මෙම කාර්යය පැහැදිලි කිරීමට වඩා පහසු ය ඇයි එය වැඩ කරයි, නමුත් අපි දෙකම කිරීමට උත්සාහ කරමු 🙂

ඉතින්, අපි යතුරුපුවරු කෙටිමඟක් සමඟ සාමාන්ය පරාසයන්ගෙන් නිර්මාණය කර ඇති "ස්මාර්ට්" ගතික වගු දෙකක් ඇත Ctrl+T හෝ කණ්ඩායම නිවස - මේසයක් ලෙස හැඩතල ගැන්වීම (මුල් පිටුව - වගුවක් ලෙස ආකෘතිය):

List.Accumulate ශ්‍රිතය සමඟ බල විමසුමේ තොග පෙළ ප්‍රතිස්ථාපනය

මම පළමු මේසයට කතා කළෙමි දත්ත, දෙවන වගුව - නාමාවලියක්ෂේත්‍රය භාවිතා කිරීම මේසයේ නම (මේස නම) ටැබ් ඉදිකිරීම්කරු (නිර්මාණ).

කාර්යය: වගුවේ ඇති ලිපින ආදේශ කරන්න දත්ත තීරුවකින් සියලුම සිදුවීම් සොයා ගැනීමට අත්පොත තීරුවේ සිට ඔවුන්ගේ අනුරූප නිවැරදි සගයන් වෙත ආදේශ කරන්න. සෛල තුළ ඇති ඉතිරි පෙළ නොසැලී සිටිය යුතුය.

පියවර 1. ඩිරෙක්ටරිය Power Query වෙත පූරණය කර එය ලැයිස්තුවක් බවට පත් කරන්න

සක්‍රිය කොටුව යොමු වගුවේ ඕනෑම ස්ථානයකට සකසා ඇති පසු, ටැබ් එක මත ක්ලික් කරන්න දත්ත (දිනය)හෝ ටැබ් එක මත බල විමසුම (ඔබට Excel හි පැරණි අනුවාදයක් තිබේ නම් සහ ඔබ වෙනම පටිත්තක ඇඩෝනයක් ලෙස Power Query ස්ථාපනය කර ඇත්නම්) බොත්තම මත වගුව/පරාසයෙන් (වගුව/පරාසයෙන්).

විමර්ශන වගුව බල විමසුම් විමසුම් සංස්කාරකය වෙත පටවනු ලැබේ:

List.Accumulate ශ්‍රිතය සමඟ බල විමසුමේ තොග පෙළ ප්‍රතිස්ථාපනය

බාධා නොකිරීමට, ස්වයංක්‍රීයව එකතු කරන ලද පියවරකි වෙනස් කරන ලද වර්ගය (වෙනස් කළ වර්ගය) දකුණු පුවරුවේ, යොදන ලද පියවර ආරක්ෂිතව මකා දැමිය හැකි අතර, පියවර පමණක් ඉතිරි වේ මූලාශ්රය (මූලාශ්රය):

List.Accumulate ශ්‍රිතය සමඟ බල විමසුමේ තොග පෙළ ප්‍රතිස්ථාපනය

දැන්, තවදුරටත් පරිවර්තන සහ ආදේශන සිදු කිරීම සඳහා, අපි මෙම වගුව ලැයිස්තුවක් (ලැයිස්තුව) බවට පත් කළ යුතුය.

ගීතමය අපගමනය

දිගටම කරගෙන යාමට පෙර, අපි මුලින්ම නියමයන් තේරුම් ගනිමු. බල විමසුමට වස්තු වර්ග කිහිපයක් සමඟ ක්‍රියා කළ හැකිය:
  • වගුව පේළි සහ තීරු කිහිපයකින් සමන්විත ද්විමාන අරාවකි.
  • වාර්තාව (වාර්තාව) - එක්-මාන අරාව-තන්තුව, ක්ෂේත්‍ර කිහිපයකින් සමන්විත - නම් සහිත මූලද්‍රව්‍ය, උදාහරණයක් ලෙස [නම = "මාෂා", ස්ත්‍රී පුරුෂ භාවය = "f", වයස = 25]
  • ලැයිස්තුව - උදාහරණයක් ලෙස මූලද්‍රව්‍ය කිහිපයකින් සමන්විත ඒකමාන අරාව-තීරුවකි {1, 2, 3, 10, 42} or { "විශ්වාසය බලාපොරොත්තුව ආදරය" }

අපගේ ගැටළුව විසඳීම සඳහා, අපි මූලික වශයෙන් වර්ගය ගැන උනන්දු වනු ඇත ලැයිස්තුව.

මෙහි ඇති උපක්‍රමය නම් Power Query හි ලැයිස්තු අයිතම සාමාන්‍ය අංක හෝ පෙළ පමණක් නොව අනෙකුත් ලැයිස්තු හෝ වාර්තා ද විය හැකි බවයි. අපගේ නාමාවලිය හැරවීමට අවශ්‍ය වාර්තා (වාර්තා) වලින් සමන්විත එවැනි උපක්‍රමශීලී ලැයිස්තුවක් (ලැයිස්තුවක්) වේ. Power Query වාක්‍ය ඛණ්ඩ අංකනයේදී (වර්ග වරහන් වල ඇතුළත් කිරීම්, වක්‍ර වරහන් වල ලැයිස්තු) මෙය පෙනෙන්නේ:

{

    [ සොයන්න = “ශාන්ත. පීටර්ස්බර්ග්", ආදේශ කරන්න = "ශාන්ත. පීටර්ස්බර්ග්"] ,

    [ සොයන්න = “ශාන්ත. පීටර්ස්බර්ග්", ආදේශ කරන්න = "ශාන්ත. පීටර්ස්බර්ග්"] ,

    [ සොයන්න = "පීටර්", ආදේශ කරන්න = "ශාන්ත. පීටර්ස්බර්ග්"] ,

ආදිය

}

බල විමසුමට ගොඩනගා ඇති M භාෂාවේ විශේෂ කාර්යයක් භාවිතයෙන් එවැනි පරිවර්තනයක් සිදු කෙරේ - වගුව.ToRecords. එය කෙලින්ම සූත්‍ර තීරුවේ යෙදීමට, එහි ඇති පියවර කේතයට මෙම ශ්‍රිතය එක් කරන්න මූලාශ්රය.

විය:

List.Accumulate ශ්‍රිතය සමඟ බල විමසුමේ තොග පෙළ ප්‍රතිස්ථාපනය

පසු:

List.Accumulate ශ්‍රිතය සමඟ බල විමසුමේ තොග පෙළ ප්‍රතිස්ථාපනය

Table.ToRecords ශ්රිතය එකතු කිරීමෙන් පසුව, අපගේ වගුවේ පෙනුම වෙනස් වනු ඇත - එය වාර්තා ලැයිස්තුවක් බවට පත් වනු ඇත. ඕනෑම වචනයක් අසල ඇති සෛල පසුබිම මත ක්ලික් කිරීමෙන් තනි වාර්තාවල අන්තර්ගතය බැලීමේ කවුළුවේ පතුලේ දැකිය හැකිය. වාර්තාව (නමුත් තනි වචනයකින් නොවේ!)

ඉහත ඒවාට අමතරව, තවත් එක් පහරක් එකතු කිරීම අර්ථවත් කරයි - අපගේ සාදන ලද ලැයිස්තුව හැඹිලි (බෆරය) කිරීමට. මෙමගින් Power Query හට අපගේ සෙවුම් ලැයිස්තුව මතකයට එක් වරක් පූරණය කිරීමට බල කෙරෙන අතර එය ප්‍රතිස්ථාපනය කිරීමට අප පසුව ප්‍රවේශ වූ විට එය නැවත ගණනය නොකරයි. මෙය සිදු කිරීම සඳහා, අපගේ සූත්‍රය වෙනත් කාර්යයකින් ඔතා - List.Buffer:

List.Accumulate ශ්‍රිතය සමඟ බල විමසුමේ තොග පෙළ ප්‍රතිස්ථාපනය

එවැනි හැඹිලි ඉවත් කිරීම සඳහා මූලික දත්ත විශාල ප්‍රමාණයක් සමඟින් (කිහිප වතාවක්!) වේගයෙහි ඉතා කැපී පෙනෙන වැඩි වීමක් ලබා දෙනු ඇත.

මෙය අත්පොත සකස් කිරීම සම්පූර්ණ කරයි.

එය ක්ලික් කිරීමට ඉතිරිව ඇත නිවස - වසන්න සහ පූරණය කරන්න - වසන්න සහ පූරණය කරන්න... (නිවස - වසන්න සහ පටවන්න - වසන්න සහ පූරණය කරන්න..), විකල්පයක් තෝරන්න සම්බන්ධතාවයක් සාදන්න (සම්බන්ධතාවය පමණක් සාදන්න) සහ Excel වෙත ආපසු යන්න.

පියවර 2. දත්ත වගුව පූරණය කිරීම

මෙහි සෑම දෙයක්ම නිහතමානී ය. විමර්ශන පොත සමඟ පෙර මෙන්, අපි මේසයේ ඕනෑම ස්ථානයකට නැඟී, ටැබ් එක මත ක්ලික් කරන්න දත්ත බොත්තම වගුව/පරාසයෙන් සහ අපේ මේසය දත්ත බල විමසුමට ඇතුල් වේ. ස්වයංක්‍රීයව එකතු කරන ලද පියවර වෙනස් කරන ලද වර්ගය (වෙනස් කළ වර්ගය) ඔබට ද ඉවත් කළ හැකිය:

List.Accumulate ශ්‍රිතය සමඟ බල විමසුමේ තොග පෙළ ප්‍රතිස්ථාපනය

එය සමඟ විශේෂ සූදානම් කිරීමේ ක්රියාවන් සිදු කිරීම අවශ්ය නොවේ, අපි වඩාත් වැදගත් දෙය වෙත යන්නෙමු.

පියවර 3. List.Accumulate ශ්‍රිතය භාවිතයෙන් ප්‍රතිස්ථාපන සිදු කරන්න

විධානය භාවිතා කර ගණනය කළ තීරුවක් අපගේ දත්ත වගුවට එකතු කරමු තීරුවක් එකතු කිරීම - අභිරුචි තීරුව (තීරුව එක් කරන්න - අභිරුචි තීරුව): සහ විවෘත වන කවුළුවේ එකතු කළ තීරුවේ නම ඇතුළත් කරන්න (උදාහරණයක් ලෙස, නිවැරදි කළ ලිපිනය) සහ අපගේ මැජික් කාර්යය ලැයිස්තුගත කරන්න:

List.Accumulate ශ්‍රිතය සමඟ බල විමසුමේ තොග පෙළ ප්‍රතිස්ථාපනය

එය ක්ලික් කිරීමට ඉතිරිව ඇත OK - සහ සිදු කරන ලද ප්‍රතිස්ථාපන සහිත තීරුවක් අපට ලැබේ:

List.Accumulate ශ්‍රිතය සමඟ බල විමසුමේ තොග පෙළ ප්‍රතිස්ථාපනය

එය සටහන් කර ගන්න:

  • බල විමසුම සිද්ධි සංවේදී බැවින්, අවසාන රේඛාවේ ආදේශකයක් නොතිබුණි, මන්ද ඩිරෙක්ටරියේ අපට ඇත්තේ “SPb” මිස “SPb” නොවේ.
  • මූලාශ්‍ර දත්තවල එකවර ප්‍රතිස්ථාපනය කිරීමට උප තන්තු කිහිපයක් තිබේ නම් (උදාහරණයක් ලෙස, 7 වන පේළියේ ඔබට “S-Pb” සහ “Prospectus” යන දෙකම ප්‍රතිස්ථාපනය කිරීමට අවශ්‍ය වේ), එවිට මෙය කිසිදු ගැටළුවක් ඇති නොකරයි (මෙය සූත්‍ර සමඟ ප්‍රතිස්ථාපනය කිරීම මෙන් නොව. පෙර ක්රමය).
  • මූලාශ්‍ර පෙළෙහි (9 වන පේළියේ) ප්‍රතිස්ථාපනය කිරීමට කිසිවක් නොමැති නම්, කිසිදු දෝෂයක් සිදු නොවේ (නැවත, සූත්‍ර මගින් ප්‍රතිස්ථාපනය කිරීමෙන් මෙන් නොව).

එවැනි ඉල්ලීමක වේගය ඉතා ඉතා යහපත් ය. උදාහරණයක් ලෙස, පේළි 5000ක ප්‍රමාණයකින් යුත් මූලික දත්ත වගුවක් සඳහා, මෙම විමසුම තත්පරයකට වඩා අඩු කාලයකදී යාවත්කාලීන කරන ලදී (බෆරයකින් තොරව, තත්පර 3ක් පමණ!)

List.Accumulate ශ්‍රිතය ක්‍රියා කරන ආකාරය

ප්‍රතිපත්තිමය වශයෙන්, මෙය අවසානය (මට ලිවීමට සහ ඔබට කියවීමට) මෙම ලිපිය විය හැකිය. ඔබට හැකි වීමට පමණක් නොව, එය "හුඩ් යට" ක්‍රියා කරන ආකාරය තේරුම් ගැනීමටද අවශ්‍ය නම්, එවිට ඔබට හාවා කුහරය තුළට මඳක් ගැඹුරට කිමිදීමට සිදුවනු ඇත. අපි වෙනුවෙන් වැඩ කරන්න.

මෙම කාර්යය සඳහා වාක්‍ය ඛණ්ඩය වන්නේ:

=ලැයිස්තුව. සමුච්චය (ලැයිස්තුව, බීජ, සමුච්චය)

එහිදී

  • ලැයිස්තුව යනු අප විසින් පුනරාවර්තනය කරන මූලද්‍රව්‍ය ලැයිස්තුවයි. 
  • බීජ - ආරම්භක තත්වය
  • සමුච්චය - ලැයිස්තුවේ ඊළඟ මූලද්රව්යය මත යම් මෙහෙයුමක් (ගණිතමය, පෙළ, ආදිය) සිදු කරන ශ්රිතයක් සහ විශේෂ විචල්යයක් තුළ සැකසීමේ ප්රතිඵලය එකතු කරයි.

සාමාන්‍යයෙන්, Power Query හි කාර්යයන් ලිවීම සඳහා වන වාක්‍ය ඛණ්ඩය මේ ආකාරයට පෙනේ:

(argument1, argument2, … argumentN) => තර්ක සහිත සමහර ක්‍රියා

උදාහරණයක් ලෙස, සමාකරණ ශ්‍රිතය මෙසේ නිරූපණය කළ හැක:

(a, b) => a + b

List.Accumulate සඳහා, මෙම සමුච්චක ශ්‍රිතයට අවශ්‍ය තර්ක දෙකක් ඇත (ඒවා ඕනෑම දෙයක් නම් කළ හැක, නමුත් සාමාන්‍ය නම් වේ රජයේ и දැනට, මෙම කාර්යය සඳහා නිල උපකාරයේ මෙන්, එහිදී:

  • රජයේ – ප්‍රතිඵලය සමුච්චය වන විචල්‍යයක් (එහි ආරම්භක අගය ඉහත සඳහන් කළ අගයයි බීජ)
  • දැනට - ලැයිස්තුවෙන් ඊළඟ පුනරාවර්තන අගය ලැයිස්තුව

උදාහරණයක් ලෙස, පහත සඳහන් ඉදිකිරීමේ තර්කයේ පියවර දෙස බලමු:

=ලැයිස්තුව. සමුච්චය ({3, 2, 5}, 10, (තත්ත්වය, ධාරාව) => තත්වය + ධාරාව)

  1. විචල්ය අගය රජයේ ආරම්භක තර්කයට සමානව සකසා ඇත බීජIe තත්වය = 10
  2. අපි ලැයිස්තුවේ පළමු අංගය ගනිමු (වත්මන් = 3) සහ එය විචල්‍යයට එක් කරන්න රජයේ (දස). අපිට ලැබෙනවා තත්වය = 13.
  3. අපි ලැයිස්තුවේ දෙවන අංගය ගනිමු (වත්මන් = 2) සහ එය විචල්‍යයේ වත්මන් සමුච්චිත අගයට එකතු කරන්න රජයේ (දස). අපිට ලැබෙනවා තත්වය = 15.
  4. අපි ලැයිස්තුවේ තුන්වන අංගය ගනිමු (වත්මන් = 5) සහ එය විචල්‍යයේ වත්මන් සමුච්චිත අගයට එකතු කරන්න රජයේ (දස). අපිට ලැබෙනවා තත්වය = 20.

මෙය අලුත්ම එකතුවකි රජයේ අගය අපගේ ලැයිස්තුව වේ. ප්‍රතිඵලයක් ලෙස ක්‍රියාකාරීත්වය සහ ප්‍රතිදානය සමුච්චය කරන්න:

List.Accumulate ශ්‍රිතය සමඟ බල විමසුමේ තොග පෙළ ප්‍රතිස්ථාපනය

ඔබ ටිකක් මනඃකල්පිත කරන්නේ නම්, List.Accumulate ශ්‍රිතය භාවිතයෙන්, ඔබට Excel ශ්‍රිතය CONCATENATE අනුකරණය කළ හැකිය (බල විමසුමේදී, එහි ප්‍රතිසමය ලෙස හැඳින්වේ. Text.Combine) ප්රකාශනය භාවිතා කිරීම:

List.Accumulate ශ්‍රිතය සමඟ බල විමසුමේ තොග පෙළ ප්‍රතිස්ථාපනය

නැතහොත් උපරිම අගය සඳහා සොයන්න (Excel හි MAX ශ්‍රිතය අනුකරණය කිරීම, එය Power Query හි හඳුන්වනු ලැබේ List.Max):

List.Accumulate ශ්‍රිතය සමඟ බල විමසුමේ තොග පෙළ ප්‍රතිස්ථාපනය

කෙසේ වෙතත්, List.Acumulate හි ප්‍රධාන ලක්ෂණය වන්නේ සරල පෙළ හෝ සංඛ්‍යාත්මක ලැයිස්තු පමණක් තර්ක ලෙස සැකසීමේ හැකියාව, නමුත් වඩාත් සංකීර්ණ වස්තූන් - උදාහරණයක් ලෙස, ලැයිස්තු-ලැයිස්තුවලින් හෝ ලැයිස්තුවලින්-වාර්තා (ආයුබෝවන්, නාමාවලිය!)

අපගේ ගැටලුවේ ප්‍රතිස්ථාපනය සිදු කළ ඉදිකිරීම් දෙස නැවත බලමු:

ලැයිස්තුව. සමුච්චය (නාමාවලිය, [ලිපිනය], (තත්වය, වත්මන්) => පෙළ.ප්‍රතිස්ථාපනය(තත්ත්වය, ධාරාව[සොයාගන්න], ධාරාව[ප්‍රතිස්ථාපනය]) )

ඇත්තටම මෙතන වෙන්නේ මොකක්ද?

  1. ආරම්භක අගය ලෙස (බීජ) අපි තීරුවෙන් පළමු අවුල් පෙළ ගනිමු [ලිපිනය] අපගේ මේසය: 199034, ශාන්ත පීටර්ස්බර්ග්, str. බෙරිංගා, ඩී. 1
  2. ඉන්පසු List.Accumulate ලැයිස්තුවේ මුලද්‍රව්‍ය එකින් එක නැවත නැවත ක්‍රියා කරයි - අත්පොත. මෙම ලැයිස්තුවේ සෑම අංගයක්ම "සොයාගත යුතු දේ - ප්‍රතිස්ථාපනය කළ යුතු දේ" හෝ වෙනත් වචන වලින් කිවහොත්, නාමාවලියෙහි ඊළඟ පේළිය යන ක්ෂේත්‍ර යුගලයකින් සමන්විත වාර්තාවකි.
  3. සමුච්චකය ශ්‍රිතය විචල්‍යයකට දමයි රජයේ ආරම්භක අගය (පළමු ලිපිනය 199034, ශාන්ත පීටර්ස්බර්ග්, str. බෙරිංගා, ඩී. 1) සහ එය මත accumulator කාර්යයක් ඉටු කරයි - සම්මත M-කාර්යය භාවිතයෙන් ප්රතිස්ථාපන මෙහෙයුම පෙළ.ආදේශ කරන්න (Excel හි SUBSTITUTE ශ්‍රිතයට සමානයි). එහි වාක්‍ය ඛණ්ඩය වන්නේ:

    Text.Replace (මුල් පෙළ, අප සොයන දේ, අප ප්‍රතිස්ථාපනය කරන දේ)

    සහ මෙන්න අපට තිබේ:

    • රජයේ අපගේ අපිරිසිදු ලිපිනය වන අතර එය පිහිටා ඇත රජයේ (එතැනින් පැමිණීම බීජ)
    • වත්මන්[සොයන්න] - ක්ෂේත්ර අගය සොයා ගැනීමට ලැයිස්තුවේ ඊළඟ පුනරාවර්තන ප්‍රවේශයෙන් නාමාවලිය, විචල්‍යයේ පවතින දැනට
    • වත්මන්[ප්රතිස්ථාපනය] - ක්ෂේත්ර අගය ආදේශ කරන්න ලැයිස්තුවේ ඊළඟ පුනරාවර්තන ප්‍රවේශයෙන් නාමාවලියතුළ වැතිර සිටී දැනට

මේ අනුව, එක් එක් ලිපිනය සඳහා, ඩිරෙක්ටරියේ ඇති සියලුම රේඛා ගණනය කිරීමේ සම්පූර්ණ චක්‍රයක් සෑම අවස්ථාවකම ක්‍රියාත්මක වේ, [සොයන්න] ක්ෂේත්‍රයෙන් පෙළ [ප්‍රතිස්ථාපනය] ක්ෂේත්‍රයේ අගය සමඟ ප්‍රතිස්ථාපනය කරයි.

🙂 ඔබට අදහස ලැබුනා යැයි සිතමු

  • සූත්‍ර භාවිතයෙන් ලැයිස්තුවක ඇති පෙළ තොග ප්‍රතිස්ථාපනය කරන්න
  • බල විමසුමේ නිත්‍ය ප්‍රකාශන (RegExp).

ඔබමයි