17 - На М - кодируем/декодируем тексты с помощью кода Вижинера

แชร์
ฝัง
  • เผยแพร่เมื่อ 8 มี.ค. 2024
  • Решаем задачку по кодированию/декодированию информации в таблице с использованием, так называемого, кода Вижинера (многоалфавитный код и придумал его НЕ Вижинер)
    пы.сы. уже после записи посетила мысль, что проверять нужно не только null, поэтому правильнее функцию f изложить так:
    if x is text then [a=Text.ToList(x),b=Text.Combine(List.Transform(List.Zip({a,List.Positions(a)}),g))][b] else x
    Код целиком (вместо нижнего подчёркивания ставим знак больше):
    (tbl,key,cr)=_
    let
    lst=List.Buffer({"А".."Е","Ё","Ж".."Я","а".."е","ё","ж".."я","A".."Z","a".."z","0".."9"," ",",",".",":","-"}),
    c=if cr=0 then 1 else -1,
    d=Record.FromList(List.Positions(lst),lst),
    e=List.Buffer(List.Transform(Text.ToList(key),(x)=_Record.Field(d,x))),
    n=List.Count(lst),
    f=(x)=_if x is text then [a=Text.ToList(x),b=Text.Combine(List.Transform(List.Zip({a,List.Positions(a)}),g))][b] else x,
    g=(x)=_lst{Number.Mod(n+Record.Field(d,x{0})+c*(e{Number.Mod(x{1},List.Count(e))}+1),n)},
    to=Table.TransformColumns(tbl,{},f)
    in
    to
    Пост на канале тут - t.me/pbi_pq_from_tank/252
    Кому интересно:
    мой курс по Power Query - akademia-excel.ru/powerquery?...
    телега тут- t.me/pbi_pq_from_tank
  • วิทยาศาสตร์และเทคโนโลยี

ความคิดเห็น • 4

  • @user-ni2mc4fn4m
    @user-ni2mc4fn4m 2 หลายเดือนก่อน

    Спасибо, Михаил. Все замечательно работает. Если поля дата или числа - все кроме них и меняется. Если и они нужны - типизация и тоже шифруется - дешифруется )). В итоге быстрое обезличивание данных.

  • @Igor_Ashurkov
    @Igor_Ashurkov 2 หลายเดือนก่อน

    Огонь решение!. Спасибо.

  • @Ayakimov
    @Ayakimov 2 หลายเดือนก่อน

    Отлично, только для форума не очень, ведь таблица для решения, а цифры превращаются в текст, поэтому кто захочет выложить выгрузку , например из 1с, для помощи, нарушиться смысл таблицы(
    Если бы текст шифровался текстом а числа числами, и конечно же в выделенном диапазоне (работать с полями в которых не понятно нужны они или нет -кошмар😮)
    Спасибо за Ваш разбор.

    • @buchlotnik
      @buchlotnik  2 หลายเดือนก่อน +1

      функция не шифрует числовые значения - так что смысл не исказится, да и простую замену только букв уже пару раз обсуждали в чате