Bagikan melalui


Sekilas Microsoft Power Fx

Power Fx adalah bahasa kode rendah yang akan digunakan di seluruh Microsoft Power Platform. Ini adalah bahasa pemrograman umum, berkarakter kuat, deklaratif, dan fungsional.

Power Fx diekspresikan dalam teks yang ramah manusia. Ini adalah bahasa kode rendah yang bisa dikerjakan pembuat secara langsung di bilah rumus seperti Excel atau jendela teks Visual Studio Code. "Rendah" dalam kode rendah adalah karena sifat bahasa yang ringkas dan sederhana, membuat tugas pemrograman umum mudah bagi pembuat dan pengembang. Ini mengaktifkan spektrum lengkap pengembangan dari tanpa kode bagi mereka yang belum pernah melakukan pemrograman hingga "kode pro" untuk profesional berpengalaman, tanpa mempelajari atau menulis ulang jurang di antaranya, sehingga memungkinkan tim yang bermacam-macam berkolaborasi serta menghemat waktu dan pengeluaran.

Catatan

  • Microsoft Power Fx adalah nama baru untuk bahasa rumus untuk aplikasi kanvas di Power Apps. Gambaran umum ini dan artikel-artikel terkait merupakan pekerjaan yang sedang berlangsung saat kami mengekstrak bahasa dari aplikasi kanvas, mengintegrasikannya dengan produk Microsoft Power Platform lain, dan membuatnya tersedia sebagai sumber terbuka. Untuk mempelajari lebih lanjut dan mempelajari bahasa hari ini, mulai dengan rumus di aplikasi kanvas di dokumentasi Power Apps dan mendaftarlah untuk uji coba Power Apps gratis.
  • Dalam artikel ini, kami merujuk ke pembuat ketika kami menjelaskan fitur yang mungkin digunakan di kedua ujung spektrum keterampilan pemrograman. Kami menyebut pengguna sebagai pengembang jika fitur ini lebih canggih dan kemungkinan di luar lingkup pengguna Excel yang umum.

Power Fx mengikat objek bersama dengan rumus seperti spreadsheet deklaratif. Misalnya, pikirkan properti Terlihat dari kontrol UI sebagai sel dalam lembar kerja Excel, dengan rumus terkait yang menghitung nilainya berdasarkan properti kontrol lain. Logika rumus menghitung ulang nilai secara otomatis, mirip dengan bagaimana spreadsheet melakukannya, yang memengaruhi visibilitas kontrol.

Selain itu, Power Fx menawarkan logika imperatif bila diperlukan. Lembar kerja biasanya tidak memiliki tombol yang bisa mengirimkan perubahan ke database, tetapi aplikasi sering melakukannya. Bahasa ekspresi yang sama digunakan untuk logika deklaratif maupun imperatif.

Power Fx akan tersedia sebagai perangkat lunak sumber terbuka. Ini saat ini diintegrasikan ke aplikasi kanvas, dan kami sedang dalam proses mengekstraknya dari Power Apps untuk digunakan di produk Microsoft Power Platform lain dan sebagai sumber terbuka. Informasi lebih lanjut: Microsoft Power Fx di GitHub

Artikel ini merupakan ikhtisar bahasa dan prinsip desainnya. Untuk mempelajari lebih lanjut tentang Power Fx, lihat artikel berikut:

Bayangkan Spreadsheet

Bagaimana jika Anda bisa membuat aplikasi semudah Anda menyusun lembar kerja di Excel?

Bagaimana jika Anda dapat memanfaatkan pengetahuan spreadsheet yang ada?

Itulah pertanyaan yang menjadi inspirasi pembuatan Power Apps dan Power Fx. Ratusan juta orang membuat lembar kerja dengan Excel setiap hari; mari kita beri mereka pembuatan aplikasi yang mudah dan menggunakan konsep Excel yang sudah mereka ketahui. Dengan mengeluarkan Power Fx dari Power Apps, kita akan menjawab pertanyaan-pertanyaan ini untuk membangun otomatisasi, atau agen virtual, atau domain lainnya.

Semua bahasa pemrograman, termasuk Power Fx memiliki ekspresi: cara untuk menggambarkan perhitungan atas angka, string, atau tipe data lainnya. Contohnya, mass * acceleration di kebanyakan bahasa menyatakan perkalian dan mass dan acceleration. Hasil dari ekspresi dapat diletakkan dalam variabel, digunakan sebagai argumen untuk prosedur, atau dikurung dalam ekspresi yang lebih besar.

Power Fx melakukan langkah ini lebih lanjut. Sebuah ekspresi dengan sendirinya tidak mengatakan apa-apa tentang apa yang dikalkulasikannya. Terserah pembuat untuk menempatkannya dalam variabel atau meneruskannya ke fungsi. Di Power Fx, alih-alih hanya menulis ekspresi yang tidak memiliki arti tertentu, Anda menulis rumus yang mengikat ekspresi ke pengidentifikasi. Anda menulis force = mass * acceleration sebagai rumus untuk menghitung force. Saat mass atau acceleration berubah, force secara otomatis diperbarui ke nilai baru. Ekspresi menjelaskan perhitungan, rumus memberi nama perhitungan itu dan menggunakannya sebagai resep. Oleh karena itu, kita mengacu pada Power Fx sebagai bahasa rumus.

Misalnya, rumus dari Stack Overflow ini mencari string dalam urutan terbalik. Di Excel, ini terlihat seperti gambar berikut ini.

Pencarian sebaliknya

Cuplikan layar bilah rumus di Excel dengan rumus: =RIGHT(A1,LEN(A1)- FIND("|", SUBSTITUTE(A1," ","|", LEN(A1)-LEN(SUBSTITUTE(A1," ","")))) Sel A1 berisi teks "Halo, Dunia! Sangat menyenangkan bertemu Anda" Sel A2 berisi teks "Anda!"

Power Fx berfungsi dengan rumus yang sama, dengan referensi sel yang diganti dengan referensi properti kontrol:

Power Fx pencarian terbalik.

Cuplikan layar bilah rumus Power Fx di Power Apps. Rumusnya adalah =RIGHT(Input.Text,Len(Input.Text)- FIND("|", SUBSTITUTE(Input.Text," ","|", Len(Input.Text)-Len(Substitute(Input.Text," ","")))) Dalam kotak Input di bawah rumus, teks "Hello, World! Sangat menyenangkan untuk bertemu Anda!" muncul, huruf demi huruf. Pada saat yang sama dalam kotak Label, huruf dari kata terakhir muncul. Saat teks lengkap muncul di kotak Input, kata "Anda!" muncul di kotak Label.

Saat nilai kontrol Input diubah, kontrol Label secara otomatis menghitung ulang rumus dan menampilkan nilai baru. Tidak ada penanganan aktivitas OnChange di sini sebagaimana umumnya dalam bahasa lain.

Contoh lain yang menggunakan rumus untuk warna Fill layar. Saat penggeser yang mengontrol Merah, Hijau, dan Biru diubah, warna latar belakang secara otomatis berubah saat dihitung ulang.

Penggeser warna.

Tidak ada aktivitas OnChange untuk kontrol panel geser seperti yang umum dalam bahasa lainnya. Tidak ada cara untuk secara eksplisit menetapkan nilai properti Fill sama sekali. Jika warna tidak berfungsi seperti yang diharapkan, Anda perlu melihat rumus yang satu ini untuk memahami mengapa warna tidak berfungsi. Anda tidak perlu mencari melalui aplikasi untuk menemukan sepotong kode yang mengatur properti pada waktu yang tidak terduga; tidak ada elemen waktu. Nilai rumus yang benar selalu dipertahankan.

Saat panel geser diatur ke warna gelap, label untuk Merah, Hijau, dan Biru berubah menjadi putih untuk mengkompensasi. Ini dilakukan melalui rumus sederhana pada properti Color untuk setiap kontrol label.

Power Fx penggeser warna.

Apa yang hebat tentang ini adalah bahwa itu terisolasi dari apa yang terjadi untuk warna Fill: ini adalah dua perhitungan yang sama sekali berbeda. Alih-alih prosedur monolitik besar, logika Power Fx biasanya terdiri dari banyak formula yang lebih kecil yang independen. Ini membuat mereka lebih mudah dipahami dan memungkinkan peningkatan tanpa mengganggu logika yang ada.

Power Fx adalah bahasa deklatif, sama seperti Excel. Pembuat mendefinisikan perilaku apa yang mereka inginkan, tetapi terserah sistem untuk menentukan dan mengoptimalkan bagaimana dan kapan mencapainya. Untuk membuatnya praktis, sebagian besar pekerjaan dilakukan melalui fungsi-fungsi alami tanpa efek samping, sehingga Power Fx juga menjadi bahasa fungsi, (lagi-lagi seperti Excel).

Selalu langsung

Aspek yang menentukan lembar kerja adalah bahwa lembar kerja selalu aktif, dan perubahan tercermin secara instan. Tidak ada mode kompilasi atau jalankan dalam lembar kerja. Saat rumus dimodifikasi atau nilai dimasukkan, lembar kerja segera dihitung ulang untuk mencerminkan perubahan. Kesalahan apa pun yang terdeteksi segera muncul, dan tidak mengganggu lembar kerja lainnya.

Hal yang sama juga diimplementasikan dengan Power Fx. Kompiler inkremental digunakan untuk terus menyinkronkan program dengan data yang sedang beroperasi. Perubahan secara otomatis disebarkan melalui grafik program, yang mempengaruhi hasil perhitungan dependen, yang mungkin mendorong properti pada kontrol seperti warna atau posisi. Pengompilasi tambahan juga memberikan pengalaman pengeditan rumus kaya dengan IntelliSense, saran, penyelesaian otomatis, dan pemeriksaan ketikan.

Dalam animasi di bawah, nomor pesanan ditampilkan dalam kontrol label tergantung pada kontrol slider, meskipun ada dua kesalahan pada label di bawahnya. Aplikasi ini sangat langsung dan interaktif. Upaya pertama dalam memperbaiki rumus dengan memasukkan hasil .InvalidName adalah dalam garis merah langsung dan kesalahan yang ditampilkan, sebagaimana mestinya, tetapi aplikasi terus berjalan.

Selalu hidup.

Ketika .Employee dimasukkan, ini menyebabkan panel Data menambahkan tabel Karyawan, metadata untuk tabel ini diambil, dan saran untuk kolom segera ditawarkan. Kami baru saja membahas relasi dari satu tabel ke tabel lain dan sistem membuat penyesuaian yang diperlukan ke referensi aplikasi. Hal yang sama terjadi ketika menambahkan .Customer.

Setelah setiap perubahan, panel geser akan melanjutkan dengan nilai terakhirnya dan variabel apa pun mempertahankan nilainya. Selama ini, nomor pesanan terus ditampilkan di label atas sebagaimana mestinya. Aplikasi ini langsung, memproses data nyata, sepanjang waktu. Kita dapat menyimpannya, pergi, dan orang lain dapat membuka dan menggunakannya seperti Excel. Tidak ada langkah build, tidak ada kompilasi, hanya ada langkah publikasi untuk menentukan versi aplikasi mana yang siap untuk pengguna.

Kode rendah

Power Fx mendeskripsikan logika bisnis dalam rumus ringkas, namun kuat. Sebagian besar logika dapat dikurangi menjadi satu baris dengan banyak ekspresi dan kontrol untuk kebutuhan yang lebih kompleks. Tujuannya adalah agar jumlah konsep yang perlu dipahami pembuat tetap minimal—idealnya tidak lebih dari yang sudah diketahui pengguna Excel.

Misalnya, untuk mencari nama depan karyawan untuk pesanan, Anda menulis Power Fx seperti yang diperlihatkan dalam animasi berikut. Di luar konsep Excel, satu-satunya konsep tambahan yang digunakan di sini adalah notasi titik "." untuk menggali ke dalam struktur data, dalam hal ini .Employee.'First Name'. Animasi menunjukkan pemetaan antara bagian-bagian rumus Power Fx dan konsep yang perlu dikodekan secara eksplisit dalam JavaScript yang setara.

JavaScript low-code.

Mari perhatikan lebih dalam semua hal yang dilakukan Power Fx bagi kita dan keleluasaan yang harus dioptimalkan karena rumusnya deklaratif:

  • Asinkron: Semua operasi data dalam Power Fx bersifat asinkron. Pembuat tidak perlu menentukan ini, pembuat juga tidak perlu menyinkronkan operasi setelah panggilan selesai. Pembuat tidak perlu mengetahui konsep ini sama sekali, mereka tidak perlu mengetahui apa itu fungsi janji atau lambda.

  • Lokal dan jarak jauh: Power Fx menggunakan sintaks dan fungsi yang sama untuk data yang berada dalam memori lokal dan menghubungkan database atau layanan dari jarak jauh. Pengguna tidak perlu berpikir tentang perbedaan ini. Power Fx secara otomatis mendelegasikan apa yang dapat dilakukan ke server untuk memproses filter dan mengurutkan di sana secara lebih efisien.

  • Data relasional: Pesanan dan Pelanggan adalah dua tabel yang berbeda, dengan hubungan banyak-ke-satu. Kueri OData memerlukan "$expand" dengan pengetahuan tentang kunci asing, yang mirip dengan Gabung di SQL. Rumus tidak memiliki semua ini, pada kenyataannya, kunci database adalah konsep lain yang tidak perlu diketahui oleh pembuatnya. Pembuat dapat menggunakan notasi titik sederhana untuk mengakses seluruh grafik Relasi dari rekaman.

  • Proyeksi: Saat menulis kueri, banyak pengembang menulis select * from table, yang mengembalikan semua kolom data. Power Fx menganalisis semua kolom yang digunakan melalui seluruh aplikasi, bahkan di seluruh dependensi rumus. Proyeksi secara otomatis dioptimalkan dan, sekali lagi, pembuat tidak perlu tahu apa artinya "proyeksi".

  • Ambil hanya apa yang diperlukan: Dalam contoh ini, fungsi menyiratkan LookUp bahwa hanya satu rekaman yang harus diambil dan hanya itu yang dikembalikan. Jika lebih banyak rekaman diminta dengan menggunakan fungsi Filter—di mana ribuan rekaman mungkin memenuhi syarat—hanya satu halaman data yang dikembalikan pada satu waktu, pada urutan 100 rekaman per halaman. Pengguna harus menelusuri galeri atau tabel data untuk melihat lebih banyak data, dan secara otomatis akan dibawa untuk mereka. Pembuat dapat bernalar tentang kumpulan data besar tanpa perlu memikirkan pembatasan permintaan data untuk potongan yang dapat dikelola.

  • Berjalan hanya saat diperlukan: Kami mendefinisikan rumus untuk Text properti kontrol label. Saat variabel yang dipilih berubah, variabel LookUp akan secara otomatis dihitung ulang dan label diperbarui. Pembuat tidak perlu menulis handler OnChange untuk Selection, dan tidak perlu ingat bahwa label ini tergantung padanya. Ini adalah program deklaratif seperti yang telah didiskusikan sebelumnya, pembuat menentukan apa yang mereka inginkan di label, bukan cara atau waktu pengambilannya. Jika label ini tidak terlihat karena berada di layar yang tidak terlihat, atau properti Visible-nya salah, kita dapat menunda perhitungan ini sampai label terlihat dan secara efektif menghilangkannya jika jarang terjadi.

  • Terjemahan sintaks Excel: Excel digunakan oleh banyak pengguna, yang sebagian besar tahu bahwa ampersand (&) digunakan untuk penggabungan string. JavaScript menggunakan tanda plus (+), dan bahasa lain menggunakan titik (.).

  • Nama tampilan dan pelokalan:digunakan First Name dalam Power Fx rumus sementara nwind_firstname digunakan dalam JavaScript yang setara. Di Microsoft Dataverse dan SharePoint, ada nama tampilan untuk kolom dan tabel selain nama logika yang unik. Nama tampilan sering jauh lebih ramah pengguna, seperti dalam hal ini, tetapi mereka memiliki kualitas penting lainnya karena mereka dapat dilokalkan. Jika Anda memiliki tim multibahasa, setiap anggota tim dapat melihat nama tabel dan bidang dalam bahasa mereka sendiri. Dalam semua kasus penggunaan, Power Fx memastikan bahwa nama logika yang benar dikirim ke database secara otomatis.

Tidak ada kode

Anda tidak perlu membaca dan menulis Power Fx untuk mulai mengekspresikan logika. Ada banyak penyesuaian dan logika yang dapat dinyatakan melalui switch sederhana dan pembuat antarmuka. Alat tanpa kode ini telah dibangun untuk membaca dan menulis Power Fx untuk memastikan bahwa ada banyak ruang bagi seseorang untuk membawanya lebih jauh, sambil mengakui bahwa alat tanpa kode tidak akan pernah menawarkan semua ekspresi bahasa lengkap. Bahkan ketika digunakan dengan pembangun tanpa kode, bilah rumus berada di depan dan di tengah di Power Apps untuk mendidik pembuat tentang apa yang sedang dilakukan atas nama mereka sehingga mereka dapat mulai belajar Power Fx.

Mari lihat beberapa contoh berikut. Pada Power Apps, panel properti menyediakan switch dan tombol "tanpa kode" untuk properti kontrol. Pada praktiknya, sebagian besar nilai properti adalah statis. Anda dapat menggunakan pembangun warna untuk mengubah warna latar belakang Gallery. Perhatikan bahwa bilah rumus mencerminkan perubahan ini, memperbarui rumus ke panggilan RGBA yang berbeda. Kapan saja, Anda bisa pergi ke bilah rumus dan melangkah lebih jauh—dalam contoh ini, dengan menggunakan ColorFade untuk menyesuaikan warna. Properti warna masih muncul di panel properti, tetapi ikon fx muncul saat melayangkan kursor di atasnya dan Anda diarahkan ke bilah rumus. Ini sepenuhnya berfungsi dalam dua cara: menghapus panggilan ColorFade mengembalikan warna ke sesuatu yang dapat dipahami panel properti, dan Anda dapat menggunakannya lagi untuk mengatur warna.

Warna tanpa kode.

Berikut adalah contoh yang lebih rumit. Galeri memperlihatkan daftar karyawan dari Dataverse. Dataverse memberikan tampilan pada data tabel. Kita bisa memilih salah satu tampilan ini dan rumus diubah untuk menggunakan fungsi Filter dengan nama tampilan ini. Dua menu tarik-turun dapat digunakan untuk melakukan mengatur tabel dan tampilan yang benar tanpa menyentuh bilah rumus. Tapi katakanlah Anda ingin melangkah lebih jauh dan menambahkan urutan. Kita dapat melakukannya di bilah rumus dan panel properti kembali menampilkan ikon fx dan mengarahkan modifikasi ke bilah rumus. Dan lagi, jika kita menyederhanakan rumus ke sesuatu yang dapat dibaca dan ditulis panel properti, maka kembali dapat digunakan.

Sortir tanpa kode.

Ini adalah contoh sederhana. Kami yakin Power Fx membuat bahasa yang bagus untuk mendeskripsikan interaksi tanpa kode. Ia ringkas, kuat, dan mudah diuraikan, serta menyediakan ruang yang begitu sering diperlukan dengan "tanpa jurang" hingga kode rendah.

Kode profesional

Pembuat kode rendah kadang-kadang membangun hal-hal yang membutuhkan bantuan seorang ahli atau diambil alih oleh pengembang profesional untuk memelihara dan meningkatkan. Para profesional juga mengetahui bahwa pengembangan kode rendah dapat lebih mudah, lebih cepat, dan lebih hemat biaya daripada membangun alat bantu profesional. Tidak setiap situasi memerlukan kemampuan penuh Visual Studio.

Profesional ingin menggunakan alat profesional untuk menjadi paling produktif. Rumus Power Fx dapat disimpan dalam file sumber YAML, yang mudah diedit dengan Visual Studio Code, Visual Studio, atau editor teks lainnya dan memungkinkan Power Fx untuk ditempatkan di bawah kontrol sumber dengan GitHub, Azure DevOps, atau sistem kontrol kode sumber lainnya.

Kode Pro. Visual Studio

Kode pro GitHub.

Power Fx mendukung komponen berbasis rumus untuk berbagi dan digunakan kembali. Kami mengumumkan dukungan untuk parameter properti komponen, memungkinkan pembuatan fungsi murni yang ditentukan pengguna dengan lebih banyak peningkatan dalam perjalanan.

Selain itu, Power Fx sangat bagus untuk menggabungkan komponen dan layanan yang dibangun oleh profesional. Konektor siap pakai memberikan akses ke ratusan sumber data dan layanan web, konektor kustom memungkinkan Power Fx berbicara ke layanan web REST, dan komponen kode memungkinkan Power Fx berinteraksi dengan JavaScript kustom sepenuhnya pada layar dan halaman.

Prinsip desain

Sederhana

Power Fx dirancang untuk menargetkan audiens pembuat, yang anggotanya belum dilatih sebagai pengembang. Bila mungkin, kami akan menggunakan pengetahuan yang diketahui audiens ini atau dapat diambil dengan cepat. Jumlah konsep yang diperlukan agar berhasil tetap minimum.

Menjadi sederhana juga bagus untuk pengembang. Untuk audiens pengembang, kami menargetkan menjadi bahasa kode rendah yang mengurangi waktu yang diperlukan untuk membangun solusi.

Konsistensi Excel

Bahasa Microsoft Power Fx sangat meminjam dari bahasa rumus Excel. Kami berusaha memanfaatkan pengetahuan dan pengalaman Excel dari banyak pembuat yang juga menggunakan Excel. Jenis, operator, dan fungsi semantik sedekat mungkin dengan Excel.

Jika Excel tidak memiliki jawaban, kita selanjutnya melihat ke SQL. Setelah Excel, SQL adalah bahasa deklaratif berikutnya yang paling umum digunakan dan dapat memberikan panduan tentang operasi data dan berkarakter kuat yang tidak dilakukan Excel.

Deklaratif

Pembuatnya menjelaskan apa yang mereka ingin dilakukan oleh logika mereka, tidak persis bagaimana atau kapan melakukannya. Ini memungkinkan kompilasi untuk mengoptimalkan dengan melakukan operasi secara paralel, menunda pekerjaan sampai diperlukan, dan pra-pengambilan dan penggunaan kembali data cache.

Misalnya, dalam lembar kerja Excel, penulis menentukan Relasi di antara sel tetapi Excel memutuskan kapan dan dalam urutan apa rumus dievaluasi. Demikian pula, rumus dalam aplikasi dapat dianggap sebagai "rekalkulasi" sesuai kebutuhan berdasarkan tindakan pengguna, perubahan database, atau peristiwa timer.

Fungsional

Kami mendukung fungsi murni yang tidak memiliki efek samping. Ini menghasilkan logika yang lebih mudah dipahami dan memberi kompilasi paling banyak kebebasan untuk dioptimalkan.

Tidak seperti Excel, aplikasi berdasarkan sifatnya melakukan status bermutasi—misalnya, aplikasi memiliki tombol yang menyimpan perubahan pada rekaman dalam database. Oleh karena itu, beberapa fungsi memiliki efek samping, meskipun kami membatasinya sebanyak mungkin.

Komposisi

Jika memungkinkan, fungsionalitas yang ditambahkan disusun dengan baik dengan fungsionalitas yang ada. Fungsi canggih dapat didekomposisi ke bagian yang lebih kecil dan dapat lebih mudah digunakan secara mandiri.

Misalnya, kontrol Galeri tidak memiliki properti Sort dan Filter terpisah. Sebagai gantinya, fungsi Sort dan Filter disusun bersama-sama ke dalam satu properti Items. UI untuk mengekspresikan perilaku Sort dan Filter berlapis di atas properti Items dengan menggunakan editor dua arah untuk properti ini.

Ketikan yang ampuh

Tipe dari semua nilai diketahui pada waktu susun. Hal ini memungkinkan deteksi dini kesalahan dan saran kaya saat menulis.

Jenis polimorfik didukung, tetapi sebelum dapat digunakan, jenisnya harus disematkan ke jenis statis dan jenis itu harus diketahui pada waktu kompilasi. Fungsi IsType dan AsType disediakan untuk tipe pengujian dan kasting.

Inferensi Tipe

Tipe diambil dari penggunaannya tanpa dideklarasikan. Misalnya, mengatur variabel ke angka menghasilkan tipe variabel yang ditetapkan sebagai angka.

Hasil penggunaan tipe yang bertentangan dalam kesalahan waktu susun.

Pemisah desimal peka lokal

Beberapa wilayah di dunia menggunakan titik (.) sebagai pemisah desimal, sementara yang lain menggunakan koma (,). Ini adalah apa yang Excel lakukan juga. Ini biasanya tidak dilakukan dalam bahasa pemrograman lain, yang umumnya menggunakan titik kanonis (.) sebagai pemisah desimal untuk semua pengguna di seluruh dunia. Untuk menjadi sedekat mungkin bagi pembuat di semua tingkatan, penting bahwa 3,14 adalah angka desimal bagi seseorang di Prancis yang telah menggunakan sintaks itu sepanjang hidup mereka.

Pilihan pemisah desimal memiliki dampak berantai pada pemisah daftar, yang digunakan untuk argumen panggilan fungsi, dan operator penautan.

Pemisah desimal bahasa penulis Pemisah desimal Power Fx Pemisah daftar Power Fx Operator penautan Power Fx
. (titik) . (titik) ,( koma) ; (titik koma)
,( koma) ,( koma) ; (titik koma) ;; (titik koma ganda)

Informasi lebih lanjut: Dukungan global

Tidak berorientasi objek

Excel tidak berorientasi objek, dan juga Power Fx. Contohnya, dalam beberapa bahasa, panjang string dinyatakan sebagai properti string seperti "Hello World".length di JavaScript. Excel dan Power Fx sebagai gantinya mengekspresikan hal ini dalam fungsi sebagai Len( "Hello World" ).

Komponen dengan properti dan metode berorientasi objek dan Power Fx berfungsi di situ dengan mudah. Namun bila mungkin kita lebih menginginkan pendekatan fungsionalitas.

Dapat diperluas

Pembuat dapat membuat komponen dan fungsi mereka dengan menggunakan Power Fx itu sendiri. Pengembang dapat membuat komponen dan fungsi dengan menulis JavaScript.

Ramah pengembang

Meskipun pembuat adalah target utama kami, namun kami berusaha menjadi seramah mungkin terhadap pengembang. Jika tidak bertentangan dengan prinsip desain yang dijelaskan sebelumnya, kami melakukan hal-hal dengan cara yang akan dihargai pengembang. Misalnya, Excel tidak memiliki kapabilitas untuk menambahkan komentar, jadi kami menggunakan baris seperti C dan komentar inline.

Evolusi Bahasa

Bahasa pemrograman yang berkembang diperlukan sekaligus rumit. setiap orang—tentu—khawatir bahwa perubahan, tidak peduli seberapa baik niatnya, mungkin merusak kode yang ada dan mengharuskan pengguna untuk mempelajari pola baru. Power Fx menganggap serius kompatibilitas mundur, tetapi kami juga sangat percaya bahwa kami tidak akan selalu melakukannya dengan benar untuk pertama kalinya dan kami akan secara kolektif mempelajari apa yang terbaik sebagai komunitas. Kita harus berkembang dan Power Fx merancang dukungan untuk perkembangan bahasa sejak awal.

Stempel versi bahasa disertakan dengan setiap dokumen Power Fx yang disimpan. Jika kita ingin membuat perubahan yang tidak kompatibel, kita akan menulis apa yang kita sebut "back compat converter" yang menulis ulang rumus secara otomatis saat berikutnya diedit. Jika perubahan adalah sesuatu yang utama yang perlu kami edukasi kepada pengguna, kami juga akan menampilkan pesan dengan tautan ke dokumen. Dengan menggunakan fasilitas ini, kami masih dapat memuat aplikasi yang dibangun dengan versi pratinjau Power Apps dari bertahun-tahun yang lalu, terlepas dari semua perubahan yang terjadi sejak saat itu.

Contohnya, kami memperkenalkan fungsi ShowError untuk menampilkan banner kesalahan dengan latar belakang merah.

Tampilkan kesalahan.

Pengguna menyukainya, tetapi mereka juga meminta kami cara menampilkan banner keberhasilan (latar belakang hijau) atau banner informasi (latar belakang biru). Jadi, kami datang dengan fungsi Notify yang lebih umum yang mengambil argumen kedua untuk jenis pemberitahuan. Kita bisa saja menambahkan dan Notify mempertahankan ShowError dengan cara itu, tapi sebaliknya kita diganti ShowError dengan Notify. Kami menghapus fungsi yang sebelumnya dalam produksi dan menggantinya dengan sesuatu yang lain. Karena akan ada dua cara untuk melakukan hal yang sama, ini akan menyebabkan kebingungan—terutama bagi pengguna baru—dan, yang paling penting itu akan menambah kompleksitas. Tidak ada yang mengeluh, semua orang, senang dengan perubahan tersebut, dan kemudian beralih ke fitur Beri tahu berikutnya.

Ini adalah tampilan aplikasi yang sama bila dimuat ke versi terbaru Power Apps. Tidak ada tindakan yang diperlukan oleh pengguna untuk mewujudkan transformasi ini, itu terjadi secara otomatis ketika aplikasi dibuka.

Fungsi Notify menggantikan ShowError.

Dengan fasilitas ini, Power Fx dapat berkembang lebih cepat dan lebih agresif daripada kebanyakan bahasa pemrograman.

Tidak ada nilai yang tidak dapat didefinisikan

Beberapa bahasa, seperti JavaScript, menggunakan konsep nilai yang tidak terdefinisi untuk variabel yang tidak diinisialisasi atau properti yang hilang. Demi kesederhanaan, kami telah menghindari konsep ini. Instans yang tidak terdefinisi dalam bahasa lain diperlakukan sebagai kesalahan atau nilai kosong. Contohnya, semua variabel yang tidak diinisialisasi dimulai dengan nilai kosong. Semua jenis data dapat menggunakan nilai kosong.

Tipe data
Operator dan pengidentifikasi
Tabel
Variabel
Logika imperatif
Dukungan global
Tata bahasa ekspresi
Tata bahasa rumus YAML
Rumus di aplikasi kanvas