Π Π°Π·Π½ΠΎΠ΅

M язык: Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ ΠΏΠΎ языку Ρ„ΠΎΡ€ΠΌΡƒΠ» Power QueryΒ M – PowerQuery M

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Знакомство с языком Ρ„ΠΎΡ€ΠΌΡƒΠ» Power QueryΒ M – PowerQuery M

  • Π‘Ρ‚Π°Ρ‚ΡŒΡ
  • Π§Ρ‚Π΅Π½ΠΈΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 10Β ΠΌΠΈΠ½

ΠžΠ±Π·ΠΎΡ€

Microsoft Power Query прСдоставляСт эффСктивный интСрфСйс получСния Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‰ΠΈΠΉ мноТСством возмоТностСй. К ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ возмоТностям Power Query относятся Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΈ объСдинСниС Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… источников Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΎΠ±ΡˆΠΈΡ€Π½ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ. Для выраТСния всСх ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ язык Ρ„ΠΎΡ€ΠΌΡƒΠ» Power Query (Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ извСстный ΠΊΠ°ΠΊ язык M). Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Power Query ΠΌΠΎΠΆΠ½ΠΎ Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ M Π² ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ спСктр ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² ΠœΠ°ΠΉΠΊΡ€ΠΎΡΠΎΡ„Ρ‚, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Excel, Power BI, Analysis Services, Dataverse ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ повторяСмого Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½ΠΎΠ³ΠΎ прСобразования Π΄Π°Π½Π½Ρ‹Ρ….

Π’ этом Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ содСрТится спСцификация для M. ПослС ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ³ΠΎ ввСдСния, Ρ†Π΅Π»ΡŒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎ языкС, Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассматриваСтся язык Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΡˆΠ°Π³Π°Ρ…:

  1. ЛСксичСская структура опрСдСляСт Π½Π°Π±ΠΎΡ€ тСкстов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ лСксичСски допустимыми.

  2. ЗначСния, выраТСния, срСды ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΈ модСль ΠΎΡ†Π΅Π½ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ основныС понятия языка.

  3. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ², Ρ‚Π°ΠΊ ΠΈ структурированных Π΄Π°Π½Π½Ρ‹Ρ…, опрСдСляСт Ρ†Π΅Π»Π΅Π²ΠΎΠ΅ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ языка.

  4. ЗначСния ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΈΠΏΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сами ΠΏΠΎ сСбС ΡΠ²Π»ΡΡŽΡ‚ΡΡ особым Π²ΠΈΠ΄ΠΎΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Оба ΠΎΠ½ΠΈ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‚ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ содСрТат Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅, относящиСся ΠΊ Ρ„ΠΎΡ€ΠΌΠ°ΠΌ структурированных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

  5. Набор ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π² языкС M опрСдСляСт, ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ сформированы.

  6. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ, другая Ρ€Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ основу для ΠΎΠ±ΡˆΠΈΡ€Π½ΠΎΠΉ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для языка M ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ абстракции.

  7. Ошибки ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²ΠΎ врСмя вычислСния выраТСния. НСсмотря Π½Π° Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ ошибки Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ значСниями, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ способы ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ошибки ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ со значСниями.

  8. ВыраТСния let ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ опрСдСлСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ для построСния слоТных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² нСсколько Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… шагов.

  9. ВыраТСния if ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΡƒΡΠ»ΠΎΠ²Π½ΡƒΡŽ ΠΎΡ†Π΅Π½ΠΊΡƒ.

  10. Π Π°Π·Π΄Π΅Π»Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ простой ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ. (Π Π°Π·Π΄Π΅Π»Ρ‹ ΠΏΠΎΠΊΠ° Π΅Ρ‰Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Power Query.)

  11. НаконСц, консолидированная Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ° ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ Π² сСбС Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² этого Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π² ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅.

Для Ρ‚Π΅ΠΎΡ€Π΅Ρ‚ΠΈΠΊΠΎΠ² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… языков: язык Ρ„ΠΎΡ€ΠΌΡƒΠ», описываСмый Π² этом Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅, являСтся ΠΏΠΎ большСй части чистым, динамичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ, частично Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½Ρ‹ΠΌ языком Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка.

ВыраТСния ΠΈ значСния

Основной ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π² языкС MΒ β€” это Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΠ² ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π₯отя ΠΌΠ½ΠΎΠ³ΠΈΠ΅ значСния ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ записаны Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ Π² Π²ΠΈΠ΄Π΅ выраТСния, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ являСтся Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. НапримСр, вычислСниС выраТСния 1 Π΄Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1, Π° вычислСниС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ 1+1 Π΄Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 2. Π­Ρ‚ΠΎ Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΠ΅, Π½ΠΎ Π²Π°ΠΆΠ½ΠΎΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅. ВыраТСния ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π°Π±ΠΎΡ€Π°ΠΌΠΈ ΠΏΡ€Π°Π²ΠΈΠ» для вычислСния, Π° значСния — Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ вычислСния.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, доступныС Π² M. По соглашСнию Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ записываСтся Π² Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ являСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. (ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ // ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π°Ρ‡Π°Π»ΠΎ коммСнтария, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ продолТаСтся Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° строки.)

  • ΠŸΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ² β€” это ΠΎΠ΄Π½ΠΎΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ число, логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, тСкст ΠΈΠ»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ NULL. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ NULL ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для указания отсутствия ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ Π΄Π°Π½Π½Ρ‹Ρ….

    123                  // A number
    true                 // A logical
    "abc"                // A text
    null                 // null value
    
  • Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ списка являСтся упорядочСнной ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. M ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ бСсконСчныС списки, Π½ΠΎ Π² случаС написания Π² Π²ΠΈΠ΄Π΅ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π° списки ΠΈΠΌΠ΅ΡŽΡ‚ Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ. Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок (

    { ΠΈ }) ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ Π½Π°Ρ‡Π°Π»ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ† списка.

    {123, true, "A"}     // list containing a number, a logical, and 
                          //     a text 
    {1, 2, 3}            // list of three numbers 
    
  • Π—Π°ΠΏΠΈΡΡŒ прСдставляСт собой Π½Π°Π±ΠΎΡ€ ΠΏΠΎΠ»Π΅ΠΉ. ΠŸΠΎΠ»Π΅Β β€” это ΠΏΠ°Ρ€Π° “имя-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅”, Π³Π΄Π΅ имя являСтся тСкстовым Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… записи поля. Π›ΠΈΡ‚Π΅Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ синтаксис Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ записи позволяСт Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° Π±Π΅Π· ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ, Π² Ρ‚Π°ΠΊΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ ΠΎΠ½ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ. НиТС ΠΏΠΎΠΊΠ°Π·Π°Π½Π° запись, содСрТащая Ρ‚Ρ€ΠΈ поля с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ “A“, “B” ΠΈ “C“, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ значСния 1, 2ΠΈ 3.

    [ 
          A = 1,  
          B = 2,  
          C = 3 
    ]
    
  • Π’Π°Π±Π»ΠΈΡ†Π°

    Β β€” это Π½Π°Π±ΠΎΡ€ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, упорядочСнных ΠΏΠΎ столбцам (ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ) ΠΈ строкам. Для создания Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π½Π΅ прСдусмотрСн Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ синтаксис, ΠΎΠ΄Π½Π°ΠΊΠΎ сущСствуСт нСсколько стандартных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для создания Ρ‚Π°Π±Π»ΠΈΡ† ΠΈΠ· списков ΠΈΠ»ΠΈ записСй.

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

    #table( {"A", "B"}, { {1, 2}, {3, 4} } ) 
    

    Π”Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ создаСт Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ„ΠΎΡ€ΠΌΡ‹:

  • Ѐункция — это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ создаСт Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΡƒΡ‚Π΅ΠΌ пСрСчислСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобках, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ слСдуСт символ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° =>, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ссылаСтся Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ (ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ).

    (x, y) => (x + y) / 2`
    

ΠžΡ†Π΅Π½ΠΊΠ°

МодСль ΠΎΡ†Π΅Π½ΠΊΠΈ языка M базируСтся Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΡ†Π΅Π½ΠΊΠΈ, часто примСняСмой Π² элСктронных Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ…, Π³Π΄Π΅ порядок вычислСний ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° основС зависимостСй ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°ΠΌΠΈ Π² ячСйках.

Если Π²Ρ‹ Π²Π²Π΅Π»ΠΈ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ Π² элСктронных Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² Excel, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ вычислСнии ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ слСва Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ Π΄Π°Π΄ΡƒΡ‚ значСния, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ справа:

Π’ языкС M части выраТСния ΠΌΠΎΠ³ΡƒΡ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ части выраТСния ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ, ΠΈ процСсс ΠΎΡ†Π΅Π½ΠΊΠΈ автоматичСски ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ порядок вычислСния Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ ссылки.

МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ запись для создания выраТСния, эквивалСнтного ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌΡƒ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ элСктронной Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. ΠŸΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ значСния поля ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΡΠ»Π°Ρ‚ΡŒΡΡ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ поля Π² записи ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ поля, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

[  
    A1 = A2 * 2,  
    A2 = A3 + 1,  
    A3 = 1  
]

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π²Ρ‹ΡˆΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ эквивалСнтно ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ (Π² Ρ‚ΠΎΠΉ части, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π° Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ Ρ€Π°Π²Π½Ρ‹Π΅ значСния):

[  
    A1 = 4,  
    A2 = 2,  
    A3 = 1  
]

Записи ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… записях ΠΈΠ»ΠΈ Π²ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² Π½ΠΈΡ…. Для обращСния ΠΊ полям записи ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ

ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ подстановки ([]). НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ запись содСрТит ΠΏΠΎΠ»Π΅ Sales, содСрТащСС запись, ΠΈ ΠΏΠΎΠ»Π΅ Total, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ обращаСтся ΠΊ полям FirstHalf ΠΈ SecondHalf записи Sales:

[  
    Sales = [ FirstHalf = 1000, SecondHalf = 1100 ], 
    Total = Sales[FirstHalf] + Sales[SecondHalf] 
]

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π²Ρ‹ΡˆΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ эквивалСнтно ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΏΡ€ΠΈ вычислСнии:

[  
    Sales = [ FirstHalf = 1000, SecondHalf = 1100 ], 
    Total = 2100 
]

Записи Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ Π² списках. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ элСмСнту списка ΠΏΠΎ Π΅Π³ΠΎ числовому индСксу, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ индСкса ({}). Для ссылки Π½Π° значСния Π² спискС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΉΡΡ с нуля индСкс, отсчитываСмый ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° списка. НапримСр, индСксы

0 ΠΈ 1 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ссылки Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠΉ элСмСнты Π² спискС Π½ΠΈΠΆΠ΅:

[ 
    Sales =  
        {  
            [  
                Year = 2007,  
                FirstHalf = 1000,  
                SecondHalf = 1100, 
                Total = FirstHalf + SecondHalf // 2100 
            ], 
            [  
                Year = 2008,  
                FirstHalf = 1200,  
                SecondHalf = 1300, 
                Total = FirstHalf + SecondHalf // 2500 
            ]  
        }, 
    TotalSales = Sales{0}[Total] + Sales{1}[Total] // 4600 
]

ВыраТСния элСмСнтов списка ΠΈ записи (Π° Ρ‚Π°ΠΊΠΆΠ΅ выраТСния let, прСдставлСнныС Π½ΠΈΠΆΠ΅) ΠΎΡ†Π΅Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… вычислСний, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΎΡ†Π΅Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости. ВсС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ выраТСния ΠΎΡ†Π΅Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±Π΅Π·ΠΎΡ‚Π»ΠΎΠΆΠ½ΠΎΠ³ΠΎ вычислСния, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ сразу ΠΆΠ΅ ΠΏΡ€ΠΈ ΠΈΡ… ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ Π² процСссС ΠΎΡ†Π΅Π½ΠΊΠΈ. ΠŸΡ€ΠΈ этом слСдуСт ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΡ†Π΅Π½ΠΊΠ° выраТСния записи ΠΈΠ»ΠΈ списка Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ записи ΠΈΠ»ΠΈ списка, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠΌΠ½ΠΈΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ поля записи ΠΈΠ»ΠΈ элСмСнты списка, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ трСбуСтся Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ нСобходимости (с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² индСкса ΠΈΠ»ΠΈ подстановки).

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π’ языкС M функция — это сопоставлСниС Π½Π°Π±ΠΎΡ€Π° Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ с ΠΎΠ΄Π½ΠΈΠΌ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. Ѐункция записываСтся ΠΏΡƒΡ‚Π΅ΠΌ имСнования Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ) ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ прСдоставлСния выраТСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с использованиСм этих Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (основная Ρ‡Π°ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ) послС символа ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° (=>). ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

(x) => x + 1                    // function that adds one to a value 
(x, y) =>  x + y                // function that adds two values

Ѐункция — это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠ΅ числу ΠΈΠ»ΠΈ тСкстовому Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° функция, ΡΠ²Π»ΡΡŽΡ‰Π°ΡΡΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ поля “Add”, которая Π·Π°Ρ‚Π΅ΠΌ вызываСтся ΠΈΠ»ΠΈ выполняСтся ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»Π΅ΠΉ. ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ указываСтся Π½Π°Π±ΠΎΡ€ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ логичСски ΠΏΠΎΠ΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ для Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Ρ‚Π΅Π»Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

[ 
    Add = (x, y) => x + y,
    OnePlusOne = Add(1, 1),     // 2 
    OnePlusTwo = Add(1, 2)      // 3
]

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°

Π―Π·Ρ‹ΠΊ M Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΎΠ±Ρ‰ΠΈΠΉ Π½Π°Π±ΠΎΡ€ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ, доступных для использования Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ имСнуСтся стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ ΠΈΠ»ΠΈ просто Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ для краткости. Π­Ρ‚ΠΈ опрСдСлСния состоят ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. ИмСна Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, прСдоставлСнных Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π±Π΅Π· нСобходимости ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΈΡ… явным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Number.E                        // Euler's number e (2.7182...) 
Text.PositionOf("Hello", "ll")  // 2

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

Π―Π·Ρ‹ΠΊ M Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² выраТСниях. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΊ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°ΠΌ для формирования ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. НапримСр, Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ 1 + 2 числа 1 ΠΈ 2 ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°ΠΌΠΈ, Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ прСдставлСн ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ слоТСния (+).

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ². НапримСр, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ слоТСния ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π²ΠΈΠ΄Π°ΠΌΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΎΡ‚ чисСл:

1 + 2                   // numeric addition: 3 
#time(12,23,0) + #duration(0,0,2,0) 
                        // time arithmetic: #time(12,25,0)

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° с ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠΌ Π² зависимости ΠΎΡ‚ значСния — ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ комбинирования (&):

"A" & "BC"              // text concatenation: "ABC" 
{1} & {2, 3}            // list concatenation: {1, 2, 3} 
[ a = 1 ] & [ b = 2 ]   // record merge: [ a = 1, b = 2 ]

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π½Π΅ всС сочСтания Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

1 + "2"  // error: adding number and text is not supported

ВыраТСния, ΠΏΡ€ΠΈ вычислСнии ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ условия ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ошибки. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… Π² языкС М прСдставлСны Π½ΠΈΠΆΠ΅.

ΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅

ΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ β€” это свСдСния ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ связано со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. ΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ прСдставлСны Π² Π²ΠΈΠ΄Π΅ значСния записи, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ называСтся записью ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…. Поля записи ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для хранСния ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… значСния.

КаТдоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ запись ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…. Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ записи ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ, Ρ‚ΠΎ запись ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… пуста (Π½Π΅ содСрТит поля).

Записи ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ способ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ с Π»ΡŽΠ±Ρ‹ΠΌ Π²ΠΈΠ΄ΠΎΠΌ значСния нСнавязчивым способом. БвязываниС записи ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ измСнСнию значСния ΠΈΠ»ΠΈ Π΅Π³ΠΎ повСдСния.

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ записи ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… y связываСтся с ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ x с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ синтаксиса x meta y. НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ связываСт запись ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… с полями Rating ΠΈ Tags с тСкстовым Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ "Mozart":

"Mozart" meta [ Rating = 5, Tags = {"Classical"} ]

Для Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ содСрТат Π½Π΅ΠΏΡƒΡΡ‚ΡƒΡŽ запись ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ примСнСния ΠΌΠ΅Ρ‚Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² вычислСнии слияния записСй ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΈ Π½ΠΎΠ²ΠΎΠΉ записСй ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…. НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π° выраТСния эквивалСнтны Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Ρƒ ΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ:

("Mozart" meta [ Rating = 5 ]) meta [ Tags = {"Classical"} ] 
"Mozart" meta ([ Rating = 5 ] & [ Tags = {"Classical"} ])

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ записи ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… для ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ значСния ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Value.Metadata. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΠΎΠ»Π΅ ComposerRating обращаСтся ΠΊ записи ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… значСния Π² ΠΏΠΎΠ»Π΅ Composer, Π° Π·Π°Ρ‚Π΅ΠΌ обращаСтся ΠΊ полю Rating записи ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ….

[ 
    Composer = "Mozart" meta [ Rating = 5, Tags = {"Classical"} ], 
    ComposerRating = Value.Metadata(Composer)[Rating] // 5
]

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ let

МногиС ΠΈΠ· ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² содСрТат Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выраТСния всС Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΡŒΠ½Ρ‹Π΅ значСния выраТСния. Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ let позволяСт Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ, ΡΠ½Π°Π±Π΄ΠΈΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ Π½Π°Π±ΠΎΡ€ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ слСдуСт Π·Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ in. НапримСр, Π² нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠ°Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

let 
    Sales2007 =  
        [  
            Year = 2007,  
            FirstHalf = 1000,  
            SecondHalf = 1100, 
            Total = FirstHalf + SecondHalf // 2100 
        ], 
    Sales2008 =  
        [  
            Year = 2008,  
            FirstHalf = 1200,  
            SecondHalf = 1300, 
            Total = FirstHalf + SecondHalf // 2500 
        ] 
  in Sales2007[Total] + Sales2008[Total] // 4600

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ выраТСния являСтся числовоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (4600), вычислСнноС Π½Π° основС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, привязанных ΠΊ ΠΈΠΌΠ΅Π½Π°ΠΌ Sales2007 ΠΈ Sales2008.

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ if

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ if осущСствляСт Π²Ρ‹Π±ΠΎΡ€ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя выраТСниями Π½Π° основС логичСского условия. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

if 2 > 1 then
    2 + 2
else  
    1 + 1

ΠŸΠ΅Ρ€Π²ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (2 + 2) выбираСтся, Ссли логичСскоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (2 > 1) истинно, Π° Π²Ρ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (1 + 1) выбираСтся, Ссли ΠΎΠ½ΠΎ Π»ΠΎΠΆΠ½ΠΎ. Π’Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС 2 + 2) вычисляСтся ΠΈ становится Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ выраТСния if (4).

ошибки

Ошибка Π² языкС M ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ вычислСнии выраТСния Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Ошибки Π²Ρ‹Π΄Π°ΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ ΠΈ функциями, ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌΠΈΡΡ с условиями ошибки, Π»ΠΈΠ±ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ выраТСния error. Ошибки ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ выраТСния try. ΠŸΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ошибки указываСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для указания ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ возникновСния ошибки.

let Sales = 
    [ 
        Revenue = 2000, 
        Units = 1000, 
        UnitPrice = if Units = 0 then error "No Units"
                    else Revenue / Units 
    ], 
    UnitPrice = try Number. ToText(Sales[UnitPrice])
in "Unit Price: " & 
    (if UnitPrice[HasError] then UnitPrice[Error][Message]
    else UnitPrice[Value])

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ обращаСтся ΠΊ полю Sales[UnitPrice] ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

"Unit Price: 2"

Если Π±Ρ‹ ΠΏΠΎΠ»Π΅ Units Π±Ρ‹Π»ΠΎ Ρ€Π°Π²Π½ΠΎ Π½ΡƒΠ»ΡŽ, Ρ‚ΠΎ ΠΏΠΎΠ»Π΅ UnitPrice ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ Π±Ρ‹ ΠΊ возникновСнию ошибки, которая Π±Ρ‹Π»Π° Π±Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ try. Π’ этом случаС ΠΈΡ‚ΠΎΠ³ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π»ΠΎ Π±Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:

"No Units"

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ try ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ значСния ΠΈ ошибки Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ записи, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π»ΠΎ Π»ΠΈ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ try ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΈΠ»ΠΈ Π½Π΅Ρ‚, ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π»ΠΈΠ±ΠΎ запись ΠΎΠ± ошибкС, ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ошибки. НапримСр, рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΈ Π·Π°Ρ‚Π΅ΠΌ сразу ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π΅Π΅:

try error "negative unit count"

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ вычислСния этого выраТСния являСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ записи, ΠΏΠΎΡΡΠ½ΡΡŽΡ‰Π΅Π΅ подстановки ΠΏΠΎΠ»Π΅ΠΉ [HasError], [Error] ΠΈ [Message] Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Ρ€Π°Π½Π΅Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ с Ρ†Π΅Π½ΠΎΠΉ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ.

[ 
    HasError = true, 
    Error = 
        [ 
            Reason = "Expression.Error", 
            Message = "negative unit count", 
            Detail = null 
        ] 
]

РаспространСна Π·Π°ΠΌΠ΅Π½Π° ошибок значСниями ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅, Π½ΠΎ Π² ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ try с Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ otherwise:

try error "negative unit count" otherwise 42 
// 42

Π―Π·Ρ‹ΠΊ M для Power Query ΠΈ Power BI: Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅

– Мммм, Power Query!

Π’ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ слова часто Ρ€Π°Π·Π΄Π°ΡŽΡ‚ΡΡ Π½Π° курсах ΠΈ сСминарах ΠΏΠΎ Excel ΠΈ Power BI. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Power Query? Π­Ρ‚ΠΎ инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π°Π½Π½Ρ‹Π΅ любого Π²ΠΈΠ΄Π° ΠΈ ΠΈΠ· Π»ΡŽΠ±Ρ‹Ρ… источников ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Если Π²Ρ‹ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Power Query, срочно посмотритС Π²ΠΈΠ΄Π΅ΠΎ Π½Π° нашСм сайтС ΠΈ Π·Π°Ρ‚Π΅ΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ΡΡŒ ΠΊ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ )

Power Query – это запросы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΌΡ‹ΡˆΠΊΠΎΠΉ, указывая систСмС, ΠΊΡƒΠ΄Π° ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ дСйствия Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ. ΠžΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° макросы. Волько ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π° языкС М ΠΈ большС ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ Excel: Ρ‚Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π·Π½Π°ΠΊ Ρ€Π°Π²Π½ΠΎ, Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π² скобочках Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹. Power Query Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π·Π½Π°Π½ΠΈΠΉ ΠΈ Π½Π°Π²Ρ‹ΠΊΠΎΠ² программиста: ΠΊΠΎΠ΄ Π½Π° языкС M гСнСрируСтся автоматичСски.

ΠŸΡ€ΠΎΡΡ‚Ρ‹ΠΌΠΈ Ρ‰Π΅Π»Ρ‡ΠΊΠ°ΠΌΠΈ ΠΌΡ‹ΡˆΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΡŒ чудСса ΠΈ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΏΠΎΡ‡Ρ‚ΠΈ всС Π·Π°Π΄Π°Ρ‡ΠΈ, стоящиС ΠΏΠ΅Ρ€Π΅Π΄ Π²Π°ΠΌΠΈ. Но ΠΈΠ½ΠΎΠ³Π΄Π° Π±Ρ‹Π²Π°ΡŽΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ случаи, ΠΊΠΎΠ³Π΄Π° запрос Π½ΡƒΠΆΠ½ΠΎ всС-Ρ‚Π°ΠΊΠΈ ΠΏΠΎΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ. А Π΅Ρ‰Π΅ Ρ€Π΅ΠΆΠ΅ – Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. И Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π²ΡΠ·Π°Ρ‚ΡŒ Π²Π°ΠΌ Ρ€ΡƒΠΊΠΈ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ с запросами Power Query, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌ Π²Π°ΠΌ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² М Π½Π° русском языкС.

ПолноС описаниС языка M доступно Π½Π° сайтС Microsoft, Π½ΠΎ ΠΏΠΎΠΊΠ° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° английском языкС.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ Π½Π° языкС M Π² строкС Ρ„ΠΎΡ€ΠΌΡƒΠ» Power Query, Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΌ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ настраиваСмых (ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ…) столбцов.

Β 

Π‘Ρ‚Ρ€ΠΎΠΊΠ° Ρ„ΠΎΡ€ΠΌΡƒΠ»

Для отобраТСния строки Ρ„ΠΎΡ€ΠΌΡƒΠ» ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² мСню Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π‘Ρ‚Ρ€ΠΎΠΊΠ° Ρ„ΠΎΡ€ΠΌΡƒΠ».

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ шаг запроса с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ строки Ρ„ΠΎΡ€ΠΌΡƒΠ», Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ fx.

Β 

Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€

Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ запросов Π² Power Query позволяСт ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ запрос Π½Π° языкС M, Π±Π΅Π· использования стандартного Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π°. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² мСню ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ -> Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€.

На рисункС β€” ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° запроса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ автоматичСски сгСнСрирован Power Query Π½Π° языкС M, ΠΏΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΌ шагам обращСния ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ пустой запрос, Π² мСню Excel ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Π”Π°Π½Π½Ρ‹Π΅ -> ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ -> Из Π΄Ρ€ΡƒΠ³ΠΈΡ… источников -> ΠŸΡƒΡΡ‚ΠΎΠΉ запрос.

Β 

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ настраиваСмого столбца

Для создания настраиваСмого (ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ) столбца ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² мСню Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ столбСц -> НастраиваСмый столбСц. Π’ ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠ΅ΠΌΡΡ ΠΎΠΊΠ½Π΅ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρƒ столбца Π½Π° языкС M.

Если Π²Ρ‹ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚Π΅ ΡƒΠΆΠ΅ Π²Π°ΠΌΠΈ созданный запрос Π² Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΌ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅, Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΊΠΎΠ΄, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΉ Π² конструкции let … in … На самом Π΄Π΅Π»Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ запрос Power Query являСтся ΠΎΠ΄Π½ΠΈΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ M, Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Let раздСляСт это Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° нСсколько ΠΌΠ΅Π½ΡŒΡˆΠΈΡ….

Β 

Π”Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся, ΠΊΠ°ΠΊ устроСн язык М. Π’ языкС М Π΅ΡΡ‚ΡŒ значСния ΠΈ выраТСния.

ЗначСния β€” это значСния, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ число 1 ΠΈΠ»ΠΈ тСкстовая строка, ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ слоТныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π’Π°ΠΊΠΆΠ΅ значСния ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ записаны ΠΊΠ°ΠΊ выраТСния, Π½ΠΎ ΠΏΡ€ΠΈ этом выраТСниями ΠΎΠ½ΠΈ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 1+1 Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 2.

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ β€” это Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ для построСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сформировано с использованиСм синтаксичСских конструкций. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

if 2 > 1 then 2 else 1

Β 

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Ρ‚ΠΈΠΏΡ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, доступных Π² М:

  1. ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ значСния (primitive value) – числовыС, логичСскиС, тСкст ΠΈΠ»ΠΈ null. НапримСр:
    123 β€” число,
    true β€” логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅,
    null – отсутствиС Π΄Π°Π½Π½Ρ‹Ρ…, null
  1. Бписок (list) – упорядочСнная ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π€ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки { ΠΈ } ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ Π½Π°Ρ‡Π°Π»ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ† списка. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:
    {1, 2, 3} – список ΠΈΠ· чисСл.
  1. Π—Π°ΠΏΠΈΡΡŒ (record) – это упорядочСнная ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»Π΅ΠΉ, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ имя ΠΈ ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (любого Ρ‚ΠΈΠΏΠ°). ΠŸΡ€ΠΈΠΌΠ΅Ρ€:
    [ A = 1, B = 2, C = 3 ]
  1. Π’Π°Π±Π»ΠΈΡ†Π° (table) – Π½Π°Π±ΠΎΡ€ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² Π²ΠΈΠ΄Π΅ строк ΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Ρ… столбцов. НСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ синтаксиса для создания Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π½Π΅ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… стандартных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.
    НапримСр:
#table( {"A", "B"}, { {1, 2}, {3, 4} } )

Π‘ΡƒΠ΄Π΅Ρ‚ создана Ρ‚Π°Π±Π»ΠΈΡ†Π°:

  1. Ѐункция (function) ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π½Π°Π±ΠΎΡ€ входящих Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² ΠΎΠ΄Π½ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅. Ѐункция записываСтся ΠΏΡƒΡ‚Π΅ΠΌ пСрСчислСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобках ( ), Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ слСдуСт Π·Π½Π°ΠΊ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° => Π΄Π°Π»Π΅Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.
    (x, y) => (x + y) / 2

    Β 

Β 

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅! Π―Π·Ρ‹ΠΊ М чувствитСлСн ΠΊ рСгистру. Π’Π°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ„ΠΎΡ€ΠΌΡƒΠ»Π° Excel. CurrentWorkbook() сработаСт, Π° Excel.currentworkbook() – Π½Π΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ написана Π±Π΅Π· ΡƒΡ‡Π΅Ρ‚Π° рСгистра.

Β 

Как Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π² тСкстС запроса

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π² ΠΎΠ΄Π½Ρƒ строку Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Ρ‡Π΅Ρ€Ρ‚Ρ‹ //
ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… строках Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ ΠΈ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ символами /* ΠΈ */

НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ fx Π² строкС Ρ„ΠΎΡ€ΠΌΡƒΠ» ΠΈ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ Π±Π΅Π· скобок (). ΠŸΠΎΡΠ²ΠΈΡ‚ΡΡ ΠΎΠΊΠ½ΠΎ со справкой ΠΏΠΎ этой Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ справки ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅ Excel.Workbook

Β 

Π’Π΅ΡΡŒ ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ Ρ„ΠΎΡ€ΠΌΡƒΠ» ΠΌΠΎΠΆΠ½ΠΎ вывСсти, написав Π² строкС Ρ„ΠΎΡ€ΠΌΡƒΠ» = #shared
ΠŸΠΎΡΠ²ΠΈΡ‚ΡΡ список Ρ„ΠΎΡ€ΠΌΡƒΠ». Если Ρ‰Π΅Π»ΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅, Π² Π½ΠΈΠΆΠ½Π΅ΠΉ части экрана появится справочная информация. Из списка ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρƒ ΠΈ Ρ‚ΡƒΡ‚ ΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Π΅ Π² запрос.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° для обозначСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ – ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹. Если Π² ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π΅ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π», Ρ‚ΠΎ ΠΎΠ½ указываСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ символа # ΠΈ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

[ #"2016 Sales" = 1000,
 #"2017 Sales" = 1100,
 #"Total Sales" = #"2016 Sales" + #"2017 Sales" ]

Β 

Для обращСния ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ записСй (record) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ с ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ скобками [ ]. Β ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

[ Data = [ Base Line = 100, Rate = 1.8 ],
Progression = Data[Base Line] * Data[Rate]Β  ]

Β 

Π’ языкС M Π΅ΡΡ‚ΡŒ Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ символов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, это:

and as each else error false if in is let meta not otherwise or section shared then true try type #binary #date #datetime #datetimezone #duration #infinity #nan #sections #shared #table #time

Β 

Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ стандартныС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ Π·Π½Π°ΠΊΠΈ ΠΏΡƒΠ½ΠΊΡ‚ΡƒΠ°Ρ†ΠΈΠΈ:

, ; = < <= > >= <> + - * / & ( ) [ ] { } @ ! ? => .. ...

Β 

ЛогичСскиС выраТСния if

ЛогичСскиС выраТСния Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ if…then…else

НапримСр:

if [Sales] > 1000 then "болСС 1000" else if [Sales] > 500 then "болСС 500" else "500 или мСньшС"

Β 

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ let

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ let позволяСт Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π°, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ записываСтся Π² in.

НапримСр:

let
    Sales2017 =
     [ Year = 2017, FirstHalf = 1000, SecondHalf = 1100,
       Total = FirstHalf + SecondHalf   ], // 2100
    Sales2018 =
     [ Year = 2018, FirstHalf = 1200, SecondHalf = 1300,
       Total = FirstHalf + SecondHalf  ] // 2500
in 
    Sales2017[Total] + Sales2018[Total] // 4600
 

Β 

Для слоТных запросов ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ влоТСния let, Ρ‡Ρ‚ΠΎ позволяСт ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ запрос Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ.

НапримСр:

let 
      AreaΠ‘alculation = (x, y) => 
            let 
                  Area = x * y, 
                  DoubleArea = Area * 2 
            in 
            DoubleArea 
in 
AreaΠ‘alculation

Π­Ρ‚ΠΎ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΏΡ€Π°Π²ΠΈΠ»Π° языка M. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ лСгкая смСсь Ρ„ΠΎΡ€ΠΌΡƒΠ» Excel ΠΈ программирования. На самом Π΄Π΅Π»Π΅ с Excel большС ΠΎΠ±Ρ‰Π΅Π³ΠΎ, Ρ‡Π΅ΠΌ каТСтся Π²Π½Π°Ρ‡Π°Π»Π΅. НапримСр, ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ столбцу Base Line Π² записи Data, записанноС ΠΊΠ°ΠΊ:
= Data[Base Line]
Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ синтаксис Excel, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΡΡΡ‹Π»Π°Π΅Ρ‚Π΅ΡΡŒ Π½Π° ячСйку A1 Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ листС. Π€ΠΎΡ€ΠΌΡƒΠ»Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡ…ΠΎΠΆΠ΅ΠΉ:
=Лист!A1
ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ послС названия листа стоит Π²ΠΎΡΠΊΠ»ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π·Π½Π°ΠΊ. И Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² Power Query, ΠΈΠ»ΠΈ Π² M ΠΌΡ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ссылаСмся Π½Π΅ Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ ячСйку, Π° Π½Π° столбСц Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ. Π’ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΌ запись ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Π°: Ρ‚Π°Π±Π»ΠΈΡ†Π° Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π° листу, столбСц – ячСйкС.

Если Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ M Π² Ρ‚Π°ΠΊΠΎΠΌ ΠΊΠ»ΡŽΡ‡Π΅, Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ становятся ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятными, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ с Π²Π°ΠΌΠΈ дальшС ΠΈ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ.

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅:

Π―Π·Ρ‹ΠΊ M для Power Query ΠΈ Power BI: Ρ€Π°Π±ΠΎΡ‚Π° с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ с языком M. Рассмотрим ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅, ΠΊΠ°ΠΊ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ языка M Π² Power Query Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ со списками, записями, Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ. А Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ собствСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π’Π΅Π³ΠΈ:Β ExcelPower BI

Автор: Бтанислав БалостСй

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² язык Ρ„ΠΎΡ€ΠΌΡƒΠ» Power Query M β€” PowerQuery M

  • Π‘Ρ‚Π°Ρ‚ΡŒΡ
  • 12 ΠΌΠΈΠ½ΡƒΡ‚ Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅

ΠžΠ±Π·ΠΎΡ€

Microsoft Power Query прСдоставляСт ΠΌΠΎΡ‰Π½ΠΎΠ΅ срСдство получСния Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя мноТСство Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Основная Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Power Query β€” Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Β«ΡΠΌΠ΅ΡˆΠΈΠ²Π°Ρ‚ΡŒΒ» Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΎΠ±ΡˆΠΈΡ€Π½Ρ‹Ρ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… источников Π΄Π°Π½Π½Ρ‹Ρ…. Π›ΡŽΠ±ΠΎΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ»Π»Π°ΠΆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… выраТаСтся с использованиСм языка Ρ„ΠΎΡ€ΠΌΡƒΠ» Power Query (Π½Π΅ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ извСстного ΠΊΠ°ΠΊ Β«MΒ»). Power Query встраиваСт M-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ спСктр ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² Microsoft, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Excel, Power BI, Analysis Services, Dataverse, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ воспроизводимоС объСдинСниС Π΄Π°Π½Π½Ρ‹Ρ….

Π’ этом Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ содСрТится спСцификация языка М. ПослС ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ³ΠΎ ввСдСния, Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π° Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… прСдставлСний ΠΈ знакомства с языком, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описываСт язык Π² нСсколько ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… шагов:

  1. ЛСксичСская структура опрСдСляСт Π½Π°Π±ΠΎΡ€ лСксичСски допустимых тСкстов.

  2. ЗначСния, выраТСния, срСды ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΈ модСль ΠΎΡ†Π΅Π½ΠΊΠΈ ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ основных понятия языка .

  3. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π°Ρ спСцификация Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ , ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ…, Ρ‚Π°ΠΊ ΠΈ структурированных, опрСдСляСт Ρ†Π΅Π»Π΅Π²ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ языка.

  4. ЗначСния ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΈΠΏΠΎΠ² , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сами ΠΏΠΎ сСбС ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ особый Π²ΠΈΠ΄ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‚ основныС Π²ΠΈΠ΄Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ содСрТат Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹Π΅ для Ρ„ΠΎΡ€ΠΌ структурированных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

  5. Набор ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π² M опрСдСляСт, ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ сформированы.

  6. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ , Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Ρ‚ΠΈΠΏ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ основу для Π±ΠΎΠ³Π°Ρ‚ΠΎΠΉ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для M ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ абстракции.

  7. Ошибки ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²ΠΎ врСмя вычислСния выраТСния. Π₯отя ошибки Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ значСниями, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ способы ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ ошибки ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² значСния.

  8. ΠŸΡƒΡΡ‚ΡŒ выраТСния ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ опрСдСлСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ для построСния слоТных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ мСньшими шагами.

  9. Если выраТСния ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ условноС вычислСниС.

  10. Π‘Π΅ΠΊΡ†ΠΈΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ простой ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ. (Π Π°Π·Π΄Π΅Π»Ρ‹ Π΅Ρ‰Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Power Query.)

  11. НаконСц, объСдинСнная Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ° собираСт Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ ΠΈΠ· всСх Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² этого Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π² ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅.

Для Ρ‚Π΅ΠΎΡ€Π΅Ρ‚ΠΈΠΊΠΎΠ² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… языков: язык Ρ„ΠΎΡ€ΠΌΡƒΠ», ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π² этом Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅, являСтся Π² основном чистым, динамичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ, частично Π»Π΅Π½ΠΈΠ²Ρ‹ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ языком Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка.

ВыраТСния ΠΈ значСния

Π¦Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ конструкциСй M являСтся Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ . Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ†Π΅Π½Π΅Π½ΠΎ (вычислСно), Ρ‡Ρ‚ΠΎ даст ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ .

Π₯отя ΠΌΠ½ΠΎΠ³ΠΈΠ΅ значСния ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ ΠΊΠ°ΠΊ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ являСтся Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. НапримСр, Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ 1 оцСниваСтся ΠΊΠ°ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1 ; Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ 1+1 оцСниваСтся ΠΊΠ°ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 2 . Π­Ρ‚ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ Ρ‚ΠΎΠ½ΠΊΠΎΠ΅, Π½ΠΎ Π²Π°ΠΆΠ½ΠΎΠ΅. ВыраТСния β€” это Ρ€Π΅Ρ†Π΅ΠΏΡ‚Ρ‹ вычислСний; значСния ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΎΡ†Π΅Π½ΠΊΠΈ.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, доступных Π² M. По соглашСнию, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ записываСтся с использованиСм Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ являСтся ΠΈΠΌΠ΅Π½Π½ΠΎ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. (ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ // ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ коммСнтария, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ продолТаСтся Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° строки.)

  • ΠŸΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ прСдставляСт собой Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, состоящСС ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ части, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ числовоС, логичСскоС, тСкстовоС ΠΈΠ»ΠΈ Π½ΡƒΠ»Π΅Π²ΠΎΠ΅. . НулСвоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для обозначСния отсутствия ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ Π΄Π°Π½Π½Ρ‹Ρ….

     123 // НомСр
    true // ЛогичСский
    "Π°Π±Π²" // тСкст
    ноль // Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
     
  • Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ списка прСдставляСт собой ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡Π΅Π½Π½ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. M ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ бСсконСчныС списки, Π½ΠΎ Ссли ΠΎΠ½ΠΈ написаны ΠΊΠ°ΠΊ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹, списки ΠΈΠΌΠ΅ΡŽΡ‚ Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ. Π€ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки { ΠΈ } ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ Π½Π°Ρ‡Π°Π»ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ† списка.

     {123, true, "A"} // список, содСрТащий число, логичСскоС ΠΈ
                          //     тСкст
    {1, 2, 3} // список ΠΈΠ· Ρ‚Ρ€Π΅Ρ… чисСл
     
  • Π—Π°ΠΏΠΈΡΡŒ прСдставляСт собой Π½Π°Π±ΠΎΡ€ ΠΈΠ· ΠΏΠΎΠ»Π΅ΠΉ . ПолС β€” это ΠΏΠ°Ρ€Π° имя/Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π³Π΄Π΅ имя β€” это тСкстовоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ Π² записи поля. Π‘ΡƒΠΊΠ²Π΅Π½Π½Ρ‹ΠΉ синтаксис для Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ записи позволяСт Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° Π±Π΅Π· ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ, Ρ„ΠΎΡ€ΠΌΠ° Ρ‚Π°ΠΊΠΆΠ΅ называСтся ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ . НиТС ΠΏΠΎΠΊΠ°Π·Π°Π½Π° запись, содСрТащая Ρ‚Ρ€ΠΈ поля с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ Β« A Β», Β« B Β» ΠΈ Β« C Β», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ значСния 1 , 2 ΠΈ 9.0101 3 .

     [
          А = 1,
          Π’ = 2,
          Π‘ = 3
    ]
     
  • Π’Π°Π±Π»ΠΈΡ†Π° прСдставляСт собой Π½Π°Π±ΠΎΡ€ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π² столбцы (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ) ΠΈ строки. Для создания Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π½Π΅ сущСствуСт Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ синтаксиса, Π½ΠΎ Π΅ΡΡ‚ΡŒ нСсколько стандартных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для создания Ρ‚Π°Π±Π»ΠΈΡ† ΠΈΠ· списков ΠΈΠ»ΠΈ записСй.

    НапримСр:

     #Ρ‚Π°Π±Π»ΠΈΡ†Π°({"A", "B"}, {{1, 2}, {3, 4} } )
     

    Π­Ρ‚ΠΎ создаСт Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ„ΠΎΡ€ΠΌΡ‹:

  • Ѐункция β€” это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ создаСт Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Ѐункция записываСтся ΠΏΡƒΡ‚Π΅ΠΌ пСрСчислСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобках, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ слСдуСт символ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° => , Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π­Ρ‚ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ относится ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ (ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ).

     (Ρ…, Ρƒ) => (Ρ… + Ρƒ) / 2`
     

ΠžΡ†Π΅Π½ΠΊΠ°

МодСль ΠΎΡ†Π΅Π½ΠΊΠΈ языка M смодСлирована ΠΏΠΎ ΠΎΠ±Ρ€Π°Π·Ρ†Ρƒ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΡ†Π΅Π½ΠΊΠΈ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π² элСктронных Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ…, Π³Π΄Π΅ порядок вычислСний ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° основС зависимостСй ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°ΠΌΠΈ Π² ячСйках.

Если Π²Ρ‹ написали Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ Π² элСктронной Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ Excel, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ слСва ΠΏΡ€ΠΈ вычислСнии ΠΏΡ€ΠΈΠ²Π΅Π΄ΡƒΡ‚ ΠΊ значСниям справа:

Π’ M части выраТСния ΠΌΠΎΠ³ΡƒΡ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ части выраТСния. выраТСния ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ, ΠΈ процСсс ΠΎΡ†Π΅Π½ΠΊΠΈ автоматичСски ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ порядок, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ выраТСния, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ.

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ запись для создания выраТСния, эквивалСнтного ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌΡƒ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ элСктронной Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. ΠŸΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ значСния поля ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ поля Π² записи, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ имя поля, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:0017

 [
    А1 = А2 * 2,
    А2 = А3 + 1,
    А3 = 1
]
 

Π’Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ эквивалСнтно ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ (Π² Ρ‚ΠΎΠΌ смыслС, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π° ΠΎΡ†Π΅Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Ρ€Π°Π²Π½Ρ‹Π΅ значСния):

 [
    А1 = 4,
    А2 = 2,
    А3 = 1
]
 

Записи ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΈΠ»ΠΈ Π²ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ записи. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ поиска ( [] ) для доступа ΠΊ полям записи ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ. НапримСр, Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ записи Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ»Π΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠŸΡ€ΠΎΠ΄Π°ΠΆΠΈ , содСрТащСС запись, ΠΈ ΠΏΠΎΠ»Π΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ Π˜Ρ‚ΠΎΠ³ΠΎ , ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ обращаСтся ΠΊ полям FirstHalf ΠΈ SecondHalf записи Sales :

 [
    ΠŸΡ€ΠΎΠ΄Π°ΠΆΠΈ = [ΠŸΠ΅Ρ€Π²Π°Ρ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° = 1000, Вторая ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° = 1100],
    Π˜Ρ‚ΠΎΠ³ΠΎ = ΠŸΡ€ΠΎΠ΄Π°ΠΆΠΈ [ΠŸΠ΅Ρ€Π²Π°Ρ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π°] + ΠŸΡ€ΠΎΠ΄Π°ΠΆΠΈ [Вторая ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π°]
]
 

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π²Ρ‹ΡˆΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ эквивалСнтно ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΏΡ€ΠΈ вычислСнии: \

 [
    ΠŸΡ€ΠΎΠ΄Π°ΠΆΠΈ = [ΠŸΠ΅Ρ€Π²Π°Ρ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° = 1000, Вторая ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° = 1100],
    ВсСго = 2100
]
 

Записи Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ Π² списках. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ индСкса ( {} ) для доступа ΠΊ элСмСнту Π² спискС ΠΏΠΎ Π΅Π³ΠΎ числовому индСксу. ЗначСния Π² спискС ΡƒΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ΡΡ с использованиСм индСкса с отсчСтом ΠΎΡ‚ нуля с Π½Π°Ρ‡Π°Π»Π° списка. НапримСр, индСксы 0 ΠΈ 1 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ссылки Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠΉ элСмСнты Π² спискС Π½ΠΈΠΆΠ΅:

 [
    ΠŸΡ€ΠΎΠ΄Π°ΠΆΠΈ =
        {
            [
                Π“ΠΎΠ΄ = 2007,
                ΠŸΠ΅Ρ€Π²Π°Ρ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° = 1000,
                вторая ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° = 1100,
                ВсСго = пСрвая ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° + вторая ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° // 2100
            ],
            [
                Π“ΠΎΠ΄ = 2008,
                ΠŸΠ΅Ρ€Π²Π°Ρ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° = 1200,
                Вторая ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° = 1300,
                Π˜Ρ‚ΠΎΠ³ΠΎ = пСрвая ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° + вторая ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° // 2500
            ]
        },
    TotalSales = Sales{0}[Total] + Sales{1}[Total] // 4600
]
 

ВыраТСния элСмСнтов списка ΠΈ записи (Π° Ρ‚Π°ΠΊΠΆΠ΅ выраТСния let, прСдставлСнныС Π½ΠΈΠΆΠ΅) ΠΎΡ†Π΅Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ с использованиСм Π»Π΅Π½ΠΈΠ²Ρ‹Ρ… вычислСний , Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΎΡ†Π΅Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости. ВсС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ выраТСния ΠΎΡ†Π΅Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ с использованиСм Π½Π΅Ρ‚Π΅Ρ€ΠΏΠ΅Π»ΠΈΠ²ΠΎΠΉ ΠΎΡ†Π΅Π½ΠΊΠΈ , Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΎΡ†Π΅Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ, Ссли Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Π² процСссС ΠΎΡ†Π΅Π½ΠΊΠΈ. Π₯ΠΎΡ€ΠΎΡˆΠΈΠΉ способ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎΠ± этом β€” ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ вычислСниС выраТСния списка ΠΈΠ»ΠΈ записи Π²Π΅Ρ€Π½Π΅Ρ‚ список ΠΈΠ»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ записи, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ само Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚, ΠΊΠ°ΠΊ Π΅Π³ΠΎ элСмСнты списка ΠΈΠ»ΠΈ поля записи Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ вычислСны ΠΏΡ€ΠΈ запросС (ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ поиска ΠΈΠ»ΠΈ индСкса).

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π’ M функция прСдставляСт собой ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π°Π±ΠΎΡ€Π° Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² ΠΎΠ΄Π½ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Ѐункция записываСтся, сначала называя Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ Π½Π°Π±ΠΎΡ€ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ), Π° Π·Π°Ρ‚Π΅ΠΌ прСдоставляя Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ эти Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ значСния (Ρ‚Π΅Π»ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ) послС ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΊ ( => ) символ. НапримСр:

 (x) => x + 1 // функция, которая добавляСт Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ
(x, y) => x + y // функция, которая складываСт Π΄Π²Π° значСния
 

Ѐункция β€” это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ число ΠΈΠ»ΠΈ тСкстовоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° функция, ΡΠ²Π»ΡΡŽΡ‰Π°ΡΡΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ поля Add, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π°Ρ‚Π΅ΠΌ вызываСтся ΠΈΠ»ΠΈ выполняСтся ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»Π΅ΠΉ. ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ задаСтся Π½Π°Π±ΠΎΡ€ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ логичСски Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ Π½Π°Π±ΠΎΡ€ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Ρ‚Π΅Π»Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

 [
    Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ = (Ρ…, Ρƒ) => Ρ… + Ρƒ,
    OnePlusOne = Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(1, 1), // 2
    OnePlusTwo = Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ (1, 2) // 3
]
 

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°

M Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΎΠ±Ρ‰ΠΈΠΉ Π½Π°Π±ΠΎΡ€ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ, доступных для использования ΠΈΠ· выраТСния, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ ΠΈΠ»ΠΈ просто Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ для краткости. Π­Ρ‚ΠΈ опрСдСлСния состоят ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. ИмСна Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, прСдоставлСнныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ, доступны для использования Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π±Π΅Π· явного опрСдСлСния Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. НапримСр:

 Number.E // число Π­ΠΉΠ»Π΅Ρ€Π° e (2,7182...)
Text.PositionOf("ΠŸΡ€ΠΈΠ²Π΅Ρ‚", "ll") // 2
 

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

M Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² выраТСниях. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΊ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°ΠΌ для формирования ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. НапримСр, Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ 1 + 2 числа 1 ΠΈ 2 ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°ΠΌΠΈ, Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ являСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ слоТСния ( + ).

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π΅Π³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ². НапримСр, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ «плюс» ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΡ€ΠΎΠΌΠ΅ чисСл:

 1 + 2 // Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠ΅ слоТСниС: 3
#врСмя(12,23,0) + #ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ(0,0,2,0)
                        // Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠ° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ: #time(12,25,0)
 

Π”Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, зависящим ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°, являСтся ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ( ΠΈ ):

 "A" ΠΈ "BC" // конкатСнация тСкста: "ABC"
{1} и {2, 3} // объСдинСниС списков: {1, 2, 3}
[ a = 1 ] & [ b = 2 ] // слияниС записСй: [ a = 1, b = 2 ]
 

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π½Π΅ всС ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ. НапримСр:

 1 + "2" // ошибка: Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠΌΠ΅Ρ€Π° ΠΈ тСкста Π½Π΅ поддСрТиваСтся
 

ВыраТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈ ΠΎΡ†Π΅Π½ΠΊΠ΅ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Π΅ условия, ΠΎΡ†Π΅Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ошибки. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… Π² M ΠΏΠΎΠ·ΠΆΠ΅.

ΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅

ΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ β€” это информация ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ, связанном со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. ΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ прСдставлСны Π² Π²ΠΈΠ΄Π΅ значСния записи, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ записью ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… . Поля записи ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для хранСния ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… значСния.

КаТдоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ запись ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…. Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ записи ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ, Ρ‚ΠΎ запись ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… пуста (Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ»Π΅ΠΉ).

Записи ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ с Π»ΡŽΠ±Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ нСнавязчивым ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. БвязываниС записи ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π½Π΅ мСняСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ записи ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… y связано с ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ x с использованиСм синтаксиса x meta y . НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ связываСт запись ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… с полями Π Π΅ΠΉΡ‚ΠΈΠ½Π³ ΠΈ Π’Π΅Π³ΠΈ с тСкстовым Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Β«ΠœΠΎΡ†Π°Ρ€Ρ‚Β» :

 "ΠœΠΎΡ†Π°Ρ€Ρ‚" ΠΌΠ΅Ρ‚Π° [ Π Π΅ΠΉΡ‚ΠΈΠ½Π³ = 5, ΠœΠ΅Ρ‚ΠΊΠΈ = {"Классика"} ]
 

Для Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ содСрТат Π½Π΅ΠΏΡƒΡΡ‚ΡƒΡŽ запись ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ примСнСния meta являСтся вычислСниС слияния ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΈ Π½ΠΎΠ²ΠΎΠΉ записи ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…. НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π° выраТСния эквивалСнтны Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Ρƒ ΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ:

 ("ΠœΠΎΡ†Π°Ρ€Ρ‚" ΠΌΠ΅Ρ‚Π° [ Π Π΅ΠΉΡ‚ΠΈΠ½Π³ = 5 ]) ΠΌΠ΅Ρ‚Π° [ Π’Π΅Π³ΠΈ = {"Классика"} ]
ΠœΠ΅Ρ‚Π° "ΠœΠΎΡ†Π°Ρ€Ρ‚" ([ Rating = 5 ] & [ Tags = {"Classical"} ])
 

Доступ ΠΊ записи ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… для Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ значСния ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Value.Metadata . Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΠΎΠ»Π΅ ComposerRating обращаСтся ΠΊ записи ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… значСния Π² ΠΏΠΎΠ»Π΅ Composer , Π° Π·Π°Ρ‚Π΅ΠΌ обращаСтся ΠΊ полю Rating записи ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ….

 [
    ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ = "ΠœΠΎΡ†Π°Ρ€Ρ‚" ΠΌΠ΅Ρ‚Π° [ Π Π΅ΠΉΡ‚ΠΈΠ½Π³ = 5, ΠœΠ΅Ρ‚ΠΊΠΈ = {"Классика"} ],
    ComposerRating = Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.ΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅(ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€)[Π Π΅ΠΉΡ‚ΠΈΠ½Π³] // 5
]
 

ΠŸΡƒΡΡ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

МногиС ΠΈΠ· ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π΄ΠΎ сих ΠΏΠΎΡ€ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π²ΠΊΠ»ΡŽΡ‡Π°Π»ΠΈ всС Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΡŒΠ½Ρ‹Π΅ значСния выраТСния Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выраТСния. Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ let позволяСт Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π° ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ слСдуСт Π·Π° Π² . НапримСр, Π² нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΎ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠ°Ρ… ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ:

 ΠΏΡƒΡΡ‚ΡŒ
    ΠŸΡ€ΠΎΠ΄Π°ΠΆΠΈ2007 =
        [
            Π“ΠΎΠ΄ = 2007,
            ΠŸΠ΅Ρ€Π²Π°Ρ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° = 1000,
            вторая ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° = 1100,
            ВсСго = пСрвая ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° + вторая ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° // 2100
        ],
    ΠŸΡ€ΠΎΠ΄Π°ΠΆΠΈ2008 =
        [
            Π“ΠΎΠ΄ = 2008,
            ΠŸΠ΅Ρ€Π²Π°Ρ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° = 1200,
            Вторая ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° = 1300,
            Π˜Ρ‚ΠΎΠ³ΠΎ = пСрвая ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° + вторая ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° // 2500
        ]
  Π² Sales2007[Total] + Sales2008[Total] // 4600
 

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ выраТСния являСтся числовоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ( 4600 ), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±Ρ‹Π»ΠΎ вычислСно ΠΈΠ· Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, привязанных ΠΊ ΠΈΠΌΠ΅Π½Π°ΠΌ Sales2007 ΠΈ Sales2008 .

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ If

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ if Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π΄Π²ΡƒΡ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π½Π° основС логичСского условия. НапримСр:

 Ссли 2 > 1 Ρ‚ΠΎ
    2 + 2
Π΅Ρ‰Π΅
    1 + 1
 

ΠŸΠ΅Ρ€Π²ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ( 2 + 2 ) выбираСтся, Ссли логичСскоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ( 2 > 1 ) истинно, Π° Π²Ρ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ( 1 + 1 ) выбираСтся, Ссли ΠΎΠ½ΠΎ Π»ΠΎΠΆΠ½ΠΎ. Π’Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС 2 + 2 ) оцСниваСтся ΠΈ становится Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ выраТСния if ( 4 ).

Ошибки

Ошибка ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² процСссС вычислСния выраТСния Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Ошибки Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ ΠΈ функциями, ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌΠΈΡΡ с условиями ошибки, ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ использовании выраТСния ошибки. Ошибки ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ выраТСния try. ΠŸΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ошибки указываСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для указания ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ возникновСния ошибки.

 ΠΏΡƒΡΡ‚ΡŒ ΠŸΡ€ΠΎΠ΄Π°ΠΆΠΈ =
    [
        Π”ΠΎΡ…ΠΎΠ΄ = 2000,
        Π•Π΄ΠΈΠ½ΠΈΡ†Ρ‹ = 1000,
        UnitPrice = Ссли Units = 0, Ρ‚ΠΎ ошибка "No Units"
                    Π΅Ρ‰Π΅ Π”ΠΎΡ…ΠΎΠ΄ / Π•Π΄ΠΈΠ½ΠΈΡ†Ρ‹
    ],
    UnitPrice = ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Number. ToText(Sales[UnitPrice])
Π² "Π¦Π΅Π½Π° Π·Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ:" &
    (Ссли UnitPrice[HasError], Ρ‚ΠΎ UnitPrice[Error][Message]
    ΠΈΠ½Π°Ρ‡Π΅ UnitPrice[Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅])
 

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ выполняСтся доступ ΠΊ полю Sales[UnitPrice] ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ значСния с ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°:

 "Π¦Π΅Π½Π° Π·Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ: 2"
 

Если Π±Ρ‹ ΠΏΠΎΠ»Π΅ Units Π±Ρ‹Π»ΠΎ Ρ€Π°Π²Π½ΠΎ Π½ΡƒΠ»ΡŽ, Ρ‚ΠΎ ΠΏΠΎΠ»Π΅ UnitPrice Π²Ρ‹Π·Π²Π°Π»ΠΎ Π±Ρ‹ ΠΎΡˆΠΈΠ±ΠΊΡƒ, которая Π±Ρ‹Π»Π° Π±Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΎΠΉ . Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ Π±Ρ‹:

 "НСт Π΅Π΄ΠΈΠ½ΠΈΡ†"
 

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ try ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ значСния ΠΈ ошибки Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ записи, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Π±Ρ‹Π»ΠΎ Π»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ try ΠΈ ошибка ΠΈΠ»ΠΈ Π½Π΅Ρ‚, ΠΈ Π»ΠΈΠ±ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π»ΠΈΠ±ΠΎ запись ΠΎΠ± ошибкС, ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΠΌΡƒΡŽ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ошибки. НапримСр, рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ, Π° Π·Π°Ρ‚Π΅ΠΌ сразу Π΅Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚:

 ошибка ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ "ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ количСство Π΅Π΄ΠΈΠ½ΠΈΡ†"
 

Π­Ρ‚ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ записи, ΠΎΠ±ΡŠΡΡΠ½ΡΡŽΡ‰Π΅Π΅ поиск ΠΏΠΎΠ»Π΅ΠΉ [HasError] , [Error] ΠΈ [Message] Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ с Ρ†Π΅Π½ΠΎΠΉ Π·Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ.

 [
    Π₯Π°ΡΠžΡ€Ρ€ΠΎΡ€ = Π˜ΡΡ‚ΠΈΠ½Π°,
    Ошибка =
        [
            ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° = "Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.Ошибка",
            Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ = "ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ количСство Π΅Π΄ΠΈΠ½ΠΈΡ†",
            Π”Π΅Ρ‚Π°Π»ΡŒ = ноль
        ]
]
 

РаспространСнным случаСм являСтся Π·Π°ΠΌΠ΅Π½Π° ошибок значСниями ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. 9Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ 0101 try ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ с Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ , ΠΈΠ½Π°Ρ‡Π΅ , Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ этого Π² ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅:

 ошибка ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ "ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ число Π΅Π΄ΠΈΠ½ΠΈΡ†", ΠΈΠ½Π°Ρ‡Π΅ 42
// 42
 

ΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ β€” PowerQuery M

Π’Π²ΠΈΡ‚Ρ‚Π΅Ρ€ LinkedIn ЀСйсбук ЭлСктронная ΠΏΠΎΡ‡Ρ‚Π°

  • Π‘Ρ‚Π°Ρ‚ΡŒΡ
  • 2 ΠΌΠΈΠ½ΡƒΡ‚Ρ‹ Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅

Π’ этом ΠΊΡ€Π°Ρ‚ΠΊΠΎΠΌ ΠΎΠ±Π·ΠΎΡ€Π΅ описываСтся созданиС запросов Π½Π° языкС Ρ„ΠΎΡ€ΠΌΡƒΠ» Power Query M.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

M β€” язык с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ рСгистра.

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ запрос с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° запросов

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ запрос, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ запросов . Π‘ΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹ΠΉ запрос состоит ΠΈΠ· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, инкапсулированных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ let . ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ # с ΠΈΠΌΠ΅Π½Π΅ΠΌ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ #"Имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ" .

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ let ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ структуру:

 let
   Имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ = Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅,
   #"Имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ" = Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2
Π²
   Имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ
 

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ M-запрос Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ запросов , Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия:

  1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΡΠ΅Ρ€ΠΈΡŽ шагов Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ запроса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° let . ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ шаг опрСдСляСтся ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ шага. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ M ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ символ # ΠΊΠ°ΠΊ #"Имя шага" . Π¨Π°Π³ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΎΠΉ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ язык Ρ„ΠΎΡ€ΠΌΡƒΠ» Power Query чувствитСлСн ΠΊ рСгистру.

  2. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ шаг Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ запроса основываСтся Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ шагС, ΡΡΡ‹Π»Π°ΡΡΡŒ Π½Π° шаг ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

  3. Π’Ρ‹Π²ΠΎΠ΄ шага Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ запроса с использованиСм инструкции in . Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, послСдний шаг запроса ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ….

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ выраТСниях ΠΈ значСниях, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΊ Ρ€Π°Π·Π΄Π΅Π»Ρƒ ВыраТСния, значСния ΠΈ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ let.

Π¨Π°Π³ΠΈ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ Simple Power Query M

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π²Ρ‹ создали ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ запросов для прСобразования ΠΈΠΌΠ΅Π½ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ рСгистр.

Π£ вас Π΅ΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Π°, которая выглядит Ρ‚Π°ΠΊ:

ID Π·Π°ΠΊΠ°Π·Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π’ΠΎΠ²Π°Ρ€ Π¦Π΅Π½Π°
1 1 ΡƒΠ΄ΠΎΡ‡ΠΊΠ° 100
2 1 1 Ρ„ΡƒΠ½Ρ‚ чСрвяков 5
3 2 рыболовная ΡΠ΅Ρ‚ΡŒ 25

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ слово Π² столбцС Item с Π·Π°Π³Π»Π°Π²Π½ΠΎΠΉ Π±ΡƒΠΊΠ²Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ:

ID Π·Π°ΠΊΠ°Π·Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π’ΠΎΠ²Π°Ρ€ Π¦Π΅Π½Π°
1 1 Π£Π΄ΠΎΡ‡ΠΊΠ° 100
2 1 1 Ρ„ΡƒΠ½Ρ‚.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *