Microsoft Power Fx 개요

Power Fx은 Microsoft Power Platform에서 사용될 로우 코드 언어입니다. 이는 범용이며 강력한 유형이고 선언적이며 기능적인 프로그래밍 언어입니다.

Power Fx는 인간 친화적인 텍스트로 표현됩니다. 제작자가 Excel과 유사한 수식 입력줄 또는 Visual Studio Code 텍스트 창에서 직접 작업할 수 있는 로우코드 언어입니다. 로우코드의 "low"는 언어의 간결하고 단순한 특성으로 인해 제작자와 개발자 모두에게 일반적인 프로그래밍 작업을 쉽게 만들어줍니다. 이를 통해 이전에 프로그래밍한 적이 없는 사람들을 위한 노 코드에서 노련한 전문가를 위한 프로 코드까지 전체 개발 범위를 가능하게 하며, 중간에 학습이나 재작성이 필요하지 않으므로 다양한 팀이 협업하고 시간과 비용을 절약할 수 있습니다.

노트

  • Microsoft Power Fx은 Power Apps의 캔버스 앱용 수식 언어의 새 이름입니다. 이 개요 및 관련 문서는 캔버스 앱에서 언어를 추출하고 다른 Microsoft Power Platform 제품과 통합하여 오픈 소스로 제공하는 과정에서 진행중인 작업입니다. 오늘 언어에 대해 자세히 알아보고 경험하려면 Power Apps 설명서의 캔버스 앱에서 수식 시작하기로 시작하고 무료 Power Apps 평가판에 등록하십시오.
  • 이 문서에서는 프로그래밍 스킬 스펙트럼의 전체에 사용될 수 있는 기능을 설명할 때 제작자를 참조합니다. 기능이 더 고급이고 일반적인 Excel 사용자의 범위를 넘어설 가능성이 있는 경우 사용자를 개발자라고 합니다.

Power Fx은 선언적 스프레드시트와 같은 수식을 사용하여 개체를 결합합니다. 예를 들어 UI 컨트롤의 가시적 속성을 다른 컨트롤의 속성을 기반으로 값을 계산하는 관련 수식이 있는 Excel 워크시트의 셀로 간주합니다. 수식 논리는 스프레드시트가 수행하는 방식과 유사하게 값을 자동으로 다시 계산하여 컨트롤의 가시성에 영향을 줍니다.

또한, Power Fx은 필요할 때 명령형 논리를 제공합니다. 워크시트에는 일반적으로 데이터베이스에 변경 사항을 제출할 수 있는 버튼이 없지만 앱에는 있는 경우가 많습니다. 선언적 논리와 명령적 논리 모두에 동일한 식 언어가 사용됩니다.

Power Fx는 오픈 소스 소프트웨어로 제공됩니다. 현재 캔버스 앱에 통합되어 있으며 다른 Microsoft Power Platform 제품 및 오픈 소스에서 사용하기 위해 Power Apps에서 추출하는 중입니다. 추가 정보: GitHub의 Microsoft Power Fx

이 문서는 언어와 언어의 설계 원칙에 대한 개요입니다. Power Fx에 대한 자세한 내용은 다음 문서를 참조하십시오.

스프레드시트처럼 생각하기

Excel에서 워크시트를 작성하는 것처럼 쉽게 앱을 빌드할 수 있다면 어떨까요?

기존 스프레드시트 지식을 활용할 수 있다면 어떨까요?

이것은 Power Apps 및 Power Fx의 생성에 영감을 준 질문이었습니다. 수억 명의 사람들이 매일 Excel로 워크시트를 만듭니다. 쉽게 할 수 있도록 이를 가져와서 이미 알고 있는 Excel 개념을 사용하겠습니다. Power Apps에서 Power Fx을 분리하여 자동화, 가상 에이전트 또는 기타 도메인 구축에 대한 이러한 질문에 답할 것입니다.

Power Fx을 포함한 모든 프로그래밍 언어에는 숫자, 문자열 또는 기타 데이터 유형에 대한 계산을 나타내는 방법인 표현식이 있습니다. 예를 들어 대부분의 언어에서 mass * accelerationmassacceleration의 곱하기를 표현하는 것입니다. 식의 결과는 변수에 배치되거나 프로시저에 대한 인수로 사용되거나 더 큰 식에 중첩될 수 있습니다.

Power Fx는 이를 한 단계 더 발전시킵니다. 식 자체로 무엇을 계산하는지 설명할 수는 없습니다. 변수에 사용할지 함수에 사용할지는 제작자에게 달려 있습니다. Power Fx에서는 특별한 의미가 없는 표현식만 작성하는 대신 표현식을 식별자에 바인딩하는 수식을 작성합니다. force를 계산하는 수식으로 force = mass * acceleration을 작성합니다. mass 또는 acceleration가 변경되면 force가 자동으로 새 값으로 업데이트됩니다. 식은 계산을 설명하고, 수식은 해당 계산에 이름을 부여하며 이를 레시피로 사용합니다. 이것이 우리가 Power Fx를 수식 언어라고 지칭하는 이유입니다.

예를 들어, 이 Stack Overflow의 수식은 역순으로 문자열을 검색합니다. Excel에서는 다음 이미지와 같습니다.

역방향 검색

수식이 있는 Excel의 수식 입력줄 스크린샷: =RIGHT(A1,LEN(A1)- FIND("|", SUBSTITUTE(A1," ","|", LEN(A1)-LEN(SUBSTITUTE(A1," ","")))) Cell A1 contains the text "안녕하세요! It is great to meet you!" 셀 A2에는 "you!"라는 텍스트가 포함되어 있습니다.

Power Fx는 셀 참조가 컨트롤 속성 참조로 대체된 동일한 공식으로 작동합니다.

Power Fx 역방향 검색.

Power Apps의 Power Fx 수식 입력줄 스크린샷입니다. 공식은 =RIGHT(Input.Text,Len(Input.Text)- FIND("|", SUBSTITUTE(Input.Text," ","|", Len(Input.Text)-Len(Substitute(Input.Text," ","")))) 수식 아래의 입력 상자에 "안녕하세요! It is great to meet you!"라는 메시지가 한 글자씩 나타납니다. 동시에 레이블 상자에 마지막 단어의 문자가 나타납니다. 입력란에 전체 텍스트가 나타나면 "you!" 레이블 상자에 나타납니다.

Input 제어 값이 변경되면 Label 컨트롤은 자동으로 공식을 다시 계산하고 새 값을 표시합니다. 다른 언어에서는 흔한 요소인 OnChange 이벤트 처리기가 여기에는 없습니다.

화면의 색상의 Fill 작업을 위한 수식을 사용하는 또다른 예입니다. 빨간색, 녹색 및 파란색을 제어하는 슬라이더가 변경되면 배경색이 다시 계산되어 자동으로 변경됩니다.

색상 슬라이더.

다른 언어에서 흔히 볼 수 있는 슬라이더 컨트롤에 대한 OnChange 이벤트가 없습니다. Fill 속성 값을 명시적으로 설정할 수 있는 방법은 없습니다. 색상이 예상대로 작동하지 않는 경우 이 하나의 수식을 보고 작동하지 않는 이유를 알아내야 합니다. 시간 요소가 없어 예상치 못한 시간에 속성을 설정하는 코드 조각을 찾기 위해 앱을 검색할 필요가 없습니다. 올바른 수식 값은 항상 유지됩니다.

슬라이더가 어두운 색으로 설정되면 Red, Green, Blue의 레이블이 흰색으로 변경되어 이를 보정합니다. 이는 각 레이블 컨트롤의 Color 속성에 대한 간단한 수식을 통해 수행됩니다.

Power Fx 색상 슬라이더.

이것의 대단한 점은 Fill 색상에서 일어나는 일과 분리되어 있다는 것이며 이것은 완전히 다른 두 가지 계산입니다. 대규모 모놀리식 절차 대신, Power Fx 논리는 일반적으로 독립적인 많은 작은 수식으로 구성됩니다. 이를 통해 기존 로직을 방해하지 않고 더 쉽게 이해하고 개선할 수 있습니다.

Power Fx는 Excel과 마찬가지로 선언적 언어입니다. 제작자는 원하는 동작을 정의하지만 이를 달성하는 방법과 시기를 결정하고 최적화하는 것은 시스템에 달려 있습니다. 이를 실용적으로 만들기 위해 대부분의 작업은 부작용이 없는 순수 기능을 통해 수행되므로 Power Fx는 기능적 언어(Excel과 마찬가지임)이기도 합니다.

언제나 라이브

워크시트의 정의적인 측면은 항상 라이브 상태이며 변경 사항이 즉시 반영됩니다. 워크시트에는 컴파일 또는 실행 모드가 없습니다. 수식을 수정하거나 값을 입력하면 워크시트가 즉시 다시 계산되어 변경 사항을 반영합니다. 발견된 모든 오류는 즉시 표시되며 나머지 워크시트를 방해하지 않습니다.

Power Fx에서도 동일한 작업이 구현됩니다. 증분 컴파일러는 프로그램이 작동중인 데이터와 지속적으로 동기화되도록 유지하는 데 사용됩니다. 변경 사항은 프로그램의 그래프를 통해 자동으로 전파되어 색상 또는 위치와 같은 컨트롤의 속성을 구동할 수 있는 종속 계산 결과에 영향을 줍니다. 증분 컴파일러는 IntelliSense, 제안, 자동 완성, 형식 검사와 함께 풍부한 수식 편집 환경도 제공합니다.

아래 애니메이션에서 주문 번호는 슬라이더 컨트롤에 따라 라벨 컨트롤에 표시됩니다. 그 아래의 라벨에는 두 가지 오류가 있습니다. 이 앱은 라이브 상태이며 상호 작용적입니다. .InvalidName을 입력하여 수식을 수정하려는 첫 번째 시도는 즉시 빨간색 선과 오류가 표시되지만 앱은 계속 실행됩니다.

언제나 라이브.

.Employee 입력하면 Data 창에 Employees 테이블이 추가되고 이 테이블에 대한 메타데이터가 검색되며 열에 대한 제안이 즉시 제공됩니다. 한 테이블에서 다른 테이블로의 관계를 살펴 보았으며 시스템은 앱의 참조에 필요한 조정을 했습니다. .Customer을 추가할 때도 마찬가지입니다.

각 변경 후 슬라이더는 마지막 값으로 계속되고 모든 변수는 해당 값을 유지합니다. 전체적으로 주문 번호는 상단 라벨에 계속 표시되어 있습니다. 앱은 실시간으로 실제 데이터를 처리하고 있습니다. 이것을 저장하여 종료한 다음 다른 사용자가 이를 Excel처럼 열어서 사용할 수 있습니다. 빌드 단계, 컴파일이 없으며 사용자가 사용할 수 있는 앱 버전을 결정하는 게시 단계만 있습니다.

로우 코드

Power Fx는 비즈니스 로직을 간결하면서도 강력한 수식으로 설명합니다. 대부분의 논리는 더 복잡한 요구에 대해 충분한 표현과 제어를 사용하여 한 줄로 줄일 수 있습니다. 목표는 제작자가 이해해야 하는 개념의 수를 최소한으로 유지하는 것입니다. 이상적으로는 Excel 사용자가 이미 알고 있는 것 이상입니다.

예를 들어, 주문에 대한 직원의 이름을 조회하려면 다음 애니메이션과 같이 Power Fx를 작성합니다. Excel 개념 외에도 여기에 사용한 유일한 추가 개념은 데이터 구조로 드릴링하기 위한 점 "." 표기법입니다(이 경우 .Employee.'First Name'). 애니메이션은 Power Fx 수식의 일부와 동등한 JavaScript에서 명시적으로 코딩해야 하는 개념 간의 매핑을 보여줍니다.

로우 코드 JavaScript.

Power Fx가 우리를 위해 하는 모든 일과 수식이 선언적이기 때문에 최적화해야 하는 자유에 대해 더 자세히 살펴보겠습니다.

  • 비동기: Power Fx의 모든 데이터 작업은 비동기식입니다. 제작자는 이것을 지정할 필요가 없으며, 호출이 끝난 후 제작자는 작업을 동기화할 필요도 없습니다. 작성자는 이 개념을 전혀 알 필요가 없으며 promise 또는 lambda 함수가 무엇인지 알 필요가 없습니다.

  • 로컬 및 원격: Power Fx는 로컬 인메모리에 있고 데이터베이스 또는 서비스에서 원격인 데이터에 대해 동일한 구문과 함수를 사용합니다. 사용자는 이 구분에 대해 생각할 필요가 없습니다. Power Fx는 서버에 자동으로 위임하여 필터를 처리하고 서버에서 보다 효율적으로 정렬합니다.

  • 관계형 데이터: 주문과 고객은 다대일 관계를 가진 두 개의 다른 테이블입니다. OData 쿼리에는 SQL의 Join과 유사하게 외래 키를 알고 있는 "$expand"가 필요합니다. 이 수식에는 이러한 것들이 없으며 사실 데이터베이스 키는 작성자가 알아야 할 필요가 없는 또 다른 개념입니다. 작성자는 간단한 점 표기법을 사용하여 레코드에서 관계의 전체 그래프에 액세스할 수 있습니다.

  • 프로젝션: 쿼리를 작성할 때 많은 개발자가 select * from table을 작성하여 모든 데이터 열을 가져옵니다. Power Fx는 수식 종속성을 포함하여 전체 앱에서 사용되는 모든 열을 분석합니다. 프로젝션은 자동으로 최적화되며 제작자는 "프로젝션"이 무엇을 의미하는지 알 필요가 없습니다.

  • 필요한 것만 검색: 이 예에서 LookUp 함수는 하나의 레코드만 검색해야 하며 반환되는 것은 그것뿐임을 의미합니다. Filter 함수를 사용하여 더 많은 레코드를 요청하면(수천 개의 레코드가 자격이 될 수 있음) 페이지당 100개의 레코드 순서로 한 번에 한 페이지의 데이터만 반환됩니다. 사용자는 더 많은 데이터를 보려면 갤러리 또는 데이터 테이블을 통해 제스처를 취해야 하며 이를 통해 데이터를 자동으로 가져옵니다. 제작자는 데이터 요청을 관리 가능한 청크로 제한하는 것에 대해 생각할 필요 없이 대규모 데이터 집합에 대해 추론할 수 있습니다.

  • 필요할 때만 실행: 레이블 컨트롤의 Text 속성에 대한 수식을 정의했습니다. 선택된 변수가 변경되면 LookUp이 자동으로 다시 계산되고 레이블이 업데이트됩니다. 제작자는 Selection에 대한 OnChange 처리기를 작성할 필요가 없었으며 이 레이블이 그것에 의존한다는 것을 생각할 필요가 없었습니다. 이것은 앞에서 논의한 선언적 프로그래밍이며, 작성자는 레이블에 가지고 있으려는 것을 지정했습니다. 언제 또는 어떻게 가져오는 지는 고려하지 않았습니다. 이 라벨이 보이지 않는 화면에 있기 때문에 표시되지 않거나 Visible 속성이 false인 경우 레이블이 표시될 때까지 이 계산을 연기하고 거의 발생하지 않으면 효과적으로 제거할 수 있습니다.

  • Excel 구문 번역: Excel은 많은 사용자가 사용하며 대부분은 앰퍼샌드(&)가 문자열 연결에 사용된다는 것을 알고 있습니다. JavaScript는 더하기 기호(+)를 사용하고 다른 언어는 점(.)을 사용합니다.

  • 표시 이름 및 현지화: First Name은 Power Fx 수식에 사용되는 반면 nwind_firstname는 JavaScript에 사용됩니다. Microsoft Dataverse 및 SharePoint에는 고유한 논리적 이름 외에도 열 및 테이블의 표시 이름이 있습니다. 표시 이름은 이 경우와 같이 훨씬 더 사용자 친화적인 경우가 많지만 현지화할 수 있다는 점에서 또 다른 중요한 특성이 있습니다. 다국어 팀이 있는 경우 각 팀 구성원은 자신의 언어로 된 테이블 및 필드 이름을 볼 수 있습니다. 모든 사용 사례에서 Power Fx는 올바른 논리적 이름이 데이터베이스에 자동으로 전송되는지 확인합니다.

코드 없음

논리 표현을 시작하기 위해 Power Fx를 읽고 쓸 필요가 없습니다. 간단한 스위치 및 UI 빌더를 통해 표현할 수 있는 여러 사용자 지정 및 논리가 있습니다. 이러한 노코드 도구는 Power Fx를 읽고 쓸 수 있도록 만들어졌으며, 노코드 도구가 전체 언어의 모든 표현력을 제공할 수는 없다는 점을 인정하면서 누군가가 더 발전할 수 있는 충분한 여유 공간이 있는지 확인합니다. 코드가 없는 빌더와 함께 사용하는 경우에도 수식 입력줄은 Power Apps의 전면 중앙에 있어 제조업체를 대신하여 수행되는 작업에 대해 제조업체를 교육하여 Power Fx를 배울 수 있습니다.

예를 살펴보겠습니다. Power Apps에서, 속성 패널은 컨트롤 속성에 대한 노 코드 스위치와 노브를 제공합니다. 실제로 대부분의 속성 값은 정적입니다. 색상 빌더를 사용하여 Gallery의 배경색을 변경할 수 있습니다. 수식 표시 줄에 이 변경 사항이 반영되어 수식이 다른 RGBA 호출로 업데이트됩니다. 언제든지 수식 입력줄로 이동하여 한 단계 더 진행할 수 있습니다. 이 예에서는 ColorFade를 사용하여 색상을 조정합니다. 색상 속성은 속성 패널에 계속 나타나지만 마우스를 올리면 fx 아이콘이 나타나고 수식 입력줄로 이동합니다. 이것은 두 가지 방식으로 완전히 작동합니다: ColorFade 호출을 제거하면 색상이 속성 패널이 이해할 수 있는 것으로 반환되고 다시 사용하여 색상을 설정할 수 있습니다.

코드 없는 색상.

다음은 더 복잡한 예입니다. Dataverse 갤러리에는 Dataverse의 직원 목록이 표시됩니다. Dataverse는 테이블 데이터에 대한 보기를 제공합니다. 이러한 보기 중 하나를 선택할 수 있으며 이 보기 이름으로 Filter 함수를 사용하도록 수식이 변경됩니다. 두 개의 드롭다운 메뉴를 사용하여 수식 입력줄을 건드리지 않고도 올바른 테이블과 보기를 입력할 수 있습니다. 하지만 더 나아가서 정렬을 추가하려 한다고 가정해 보겠습니다. 수식 입력줄에서 이를 수행할 수 있으며 속성 패널에 fx 아이콘이 다시 표시되고 수식 입력줄에 수정 사항이 표시됩니다. 다시 말하지만, 속성 패널이 읽고 쓸 수 있는 것으로 수식을 단순화하면 다시 사용할 수 있습니다.

코드 없는 정렬.

이것들은 간단한 예입니다. 우리는 Power Fx가 노코드 상호 작용을 설명하는 훌륭한 언어라고 믿습니다. 간결하고, 강력하고, 구문 분석하기 쉬우며, "노 클리프"에서 로우코드까지 자주 필요한 것들에서 여유 공간을 제공합니다.

프로 코드

로우코드 제작자는 때때로 전문가의 도움을 필요로 하거나 전문 개발자에 의해 인수되어 유지되고 강화되는 것들을 만듭니다. 전문가들은 또한 로우 코드 개발이 전문 도구를 구축하는 것보다 쉽고 빠르며 비용이 적게 든다는 점을 높이 평가합니다. 모든 상황이 Visual Studio의 모든 기능을 요구하는 것은 아닙니다.

전문가는 전문 도구를 사용하여 생산성을 높이기를 원합니다. Power Fx 수식은 Visual Studio Code, Visual Studio 또는 기타 텍스트 편집기로 쉽게 편집할 수 있는 YAML 소스 파일에 저장할 수 있으며 Power Fx를 GitHub, Azure DevOps 또는 기타 소스 코드 제어 시스템으로 소스 제어가 가능합니다.

Pro 코드 Visual Studio Code.

Pro 코드 GitHub.

Power Fx는 공유 및 재사용을 위한 공식 기반 구성 요소를 지원합니다. 구성 요소 속성에 대한 매개 변수 지원을 발표하여 더 많은 기능이 개선되면서 순수한 사용자 정의 함수를 만들 수 있게 되었습니다.

또한, Power Fx는 전문가가 구축한 구성 요소와 서비스를 결합하는 데 탁월합니다. 즉시 사용 가능한 커넥터는 수백 개의 데이터 소스 및 웹 서비스에 대한 액세스를 제공하고, 사용자 지정 커넥터를 사용하면 Power Fx가 모든 REST 웹 서비스와 통신할 수 있으며, 코드 구성 요소를 사용하면 Power Fx가 화면 및 페이지에서 완전히 사용자 지정되는 JavaScript와 상호 작용할 수 있습니다.

설계 원칙

단순함

Power Fx는 구성원이 개발자 교육을 받지 않은 제작자 대상 그룹을 대상으로 하도록 설계되었습니다. 가능하면 이러한 대상 그룹이 이미 알고 있거나 빠르게 습득할 수 있는 지식을 사용했습니다. 성공적으로 사용하는 데 필요한 개념의 수가 최소한으로 유지됩니다.

단순함은 개발자에게도 좋습니다. 개발자 대상 그룹의 경우, 솔루션 구축에 필요한 시간을 줄이는 로우 코드 언어가 되는 것을 목표로 합니다.

Excel과의 일관성

Microsoft Power Fx 언어는 Excel 공식 언어에서 많이 차용됩니다. 우리는 Excel을 사용하는 많은 제작자의 Excel 지식과 경험을 활용하려고 합니다. 형식, 연산자 및 함수 의미 체계는 최대한 Excel에 가깝습니다.

Excel에 답이 없으면 다음으로 SQL을 살펴봅니다. SQL은 Excel 다음으로 가장 일반적으로 사용되는 선언적 언어이며 Excel에서 제공하지 않는 데이터 작업 및 강력한 입력에 대한 지침을 제공할 수 있습니다.

선언적

제작자는 자신의 논리가 어떻게 또는 언제가 아니라 무엇을 수행하기를 원하는지 설명합니다. 이를 통해 컴파일러는 작업을 병렬로 수행하고, 필요할 때까지 작업을 연기하며, 캐시된 데이터를 미리 가져와 재사용하여 최적화할 수 있습니다.

예를 들어 Excel 워크시트에서 작성자는 셀간에 관계를 정의하지만 Excel은 수식이 평가되는 시기와 순서를 결정합니다. 마찬가지로 앱의 수식은 사용자 작업, 데이터베이스 변경 또는 타이머 이벤트에 따라 필요에 따라 "재계산"하는 것으로 생각할 수 있습니다.

기능

우리는 부작용이 없는 순수한 함수를 선호합니다. 따라서 논리를 보다 쉽게 이해할 수 있고 컴파일러가 가장 자유롭게 최적화할 수 있습니다.

Excel과 달리 앱은 본질적으로 상태가 변합니다. 예를 들어, 앱에는 데이터베이스의 레코드에 대한 변경 내용을 저장하는 버튼이 있습니다. 따라서 일부 기능에는 부작용이 있지만 최대한 제한하였습니다.

작성

가능한 경우 추가된 기능은 기존 기능과 잘 어울립니다. 강력한 기능은 독립적으로 더 쉽게 사용할 수 있는 작은 부분으로 분해될 수 있습니다.

예를 들어 갤러리 컨트롤에는 별도의 SortFilter 속성이 없습니다. 대신 SortFilter 기능은 하나의 Items 속성으로 구성됩니다. SortFilter 동작을 표현하기 위한 UI는 이 속성에 대해 양방향 편집기를 사용하여 Items 속성 위에 계층화됩니다.

강력한 입력

모든 값의 형식은 컴파일 시간에 알려져 있습니다. 이를 통해 작성하는 동안 오류를 조기에 발견하고 다양한 제안을 할 수 있습니다.

다형성 유형이 지원되지만 사용하려면 먼저 해당 유형을 정적 유형에 고정하고 컴파일할 때 해당 유형을 알아야 합니다. IsTypeAsType 함수는 형식의 테스트 및 캐스팅을 위해 제공됩니다.

형식 유추

형식은 선언되지 않고 사용에서 파생됩니다. 예를 들어 변수를 숫자로 설정하면 변수 유형이 숫자로 설정됩니다.

형식 사용이 충돌하면 컴파일 시간 오류가 발생합니다.

지역 구분 소수점 구분 기호

세계의 일부 지역에서는 점(.)을 소수 구분 기호로 사용하지만, 다른 지역에서는 콤마(,)를 사용합니다. Excel도 마찬가지입니다. 이는 일반적으로 다른 프로그래밍 언어에서는 수행되지 않으며, 일반적으로 Canonical 점(.)을 전 세계 모든 사용자에 대한 소수 구분 기호로 사용합니다. 모든 수준의 메이커들이 최대한 접근하기 위해서는 평생 이 구문을 사용해 온 프랑스인에게 3,14가 소수라는 것이 중요합니다.

소수점 구분 기호의 선택은 함수 호출 인수 및 연결 연산자에 사용되는 목록 구분 기호에 계단식 영향을 미칩니다.

작성자 언어의 소수 구분 기호 Power Fx 소수 구분 기호 Power Fx 목록 구분 기호 Power Fx 연결 연산자
페이지를 참조하세요. (점) 페이지를 참조하세요. (점) ,(쉼표) ;(세미콜론)
,(쉼표) ,(쉼표) ;(세미콜론) ;;(이중 세미콜론)

추가 정보: 글로벌 지원

객체 지향이 아닙니다

Excel은 개체 지향적이 아니며 Power Fx도 마찬가지입니다. 예를 들어, 일부 언어에서 문자열의 길이는 JavaScript에서의 "Hello World".length와 같은 문자열의 속성으로 표현됩니다. 대신 Excel 및 Power Fx에서는 이것을 Len( "Hello World" )로 표현하여 함수를 대신합니다.

속성 및 메서드가 있는 구성 요소는 개체 지향적이며 Power Fx는 이러한 구성 요소와 쉽게 작동합니다. 그러나 가능한 경우 기능적 접근 방식을 선호합니다.

확장 가능

제작자는 Power Fx 자체를 사용하여 구성 요소와 기능을 만들 수 있습니다. 개발자는 JavaScript를 작성하여 구성 요소와 기능을 만들 수 있습니다.

개발자 친화적

작성자가 저희의 주요 대상 그룹이지만 저희는 가능한 한 개발자 친화적일 수 있도록 노력했습니다. 앞서 설명한 설계 원칙과 충돌하지 않는 경우 개발자가 이해할 수 있는 방식으로 작업을 수행합니다. 예를 들어 Excel에는 주석을 추가할 수 있는 기능이 없으므로 C와 유사한 줄과 인라인 주석을 사용합니다.

언어 발전

프로그래밍 언어를 발전시키는 것은 필수적이면서도 까다롭습니다. 모든 사람은 의도가 아무리 좋더라도 변경으로 인해 기존 코드가 손상될 수 있고 사용자가 새로운 패턴을 배워야 한다고 우려합니다. Power Fx는 이전 버전과의 호환성을 중요하게 생각하지만 처음에는 항상 올바르게 작동하지는 않을 것이며 커뮤니티에서 가장 좋은 것이 무엇인지 집합적으로 배울 것이라고 굳게 믿습니다. 우리는 진화해야 하며, Power Fx는 처음부터 언어 진화에 대한 지원을 설계했습니다.

저장된 모든 Power Fx 문서에는 언어 버전 스탬프가 포함되어 있습니다. 호환되지 않는 변경을 원하면 다음에 편집할 때 수식을 자동으로 다시 작성하는 "이전 버전과 호환 변환기"를 작성합니다. 변경 사항이 사용자를 교육해야 할 중요한 사항인 경우 문서 링크가 포함된 메시지도 표시됩니다. 이 기능을 사용하면 그 이후 발생한 모든 변경에도 불구하고 수년 전부터 Power Apps의 프리뷰 버전으로 구축된 앱을 로드할 수 있습니다.

예를 들어, 저희는 빨간색 배경의 오류 배너를 표시하는 ShowError 함수를 선보였습니다.

오류 표시.

사용자는 이를 좋아했지만 성공 배너(녹색 배경) 또는 정보 배너(파란색 배경)를 표시할 수 있는 방법을 요청했습니다. 그래서 우리는 알림의 종류에 대한 두 번째 인수를 취하는 좀 더 일반적인 Notify 함수를 생각해 냈습니다. 그냥 Notify을 추가하고 ShowError를 그대로 유지할 수 있었지만 대신 ShowErrorNotify로 대체했습니다. 이전에 제공하던 기능을 제거하고 다른 기능으로 교체했습니다. 동일한 작업을 수행하는 두 가지 방법이 있었기 때문에 특히 신규 사용자에게 혼란을 야기했을 것이며 가장 중요한 것은 복잡성을 더했을 것입니다. 누구도 불만을 제기하지 않았고 변경 사항에 감사하였으며 새로운 알림 기능을 사용하기 시작했습니다.

이것은 동일한 앱이 최신 버전의 Power Apps에 로드되었을 때의 모습입니다. 사용자가 이 변환을 수행하기 위해 필요한 조치는 없으며 앱을 열 때 자동으로 수행되었습니다.

알림 기능이 ShowError를 대체.

이러한 기능을 통해 Power Fx는 대부분의 프로그래밍 언어보다 더 빠르고 공격적으로 발전할 수 있습니다.

정의되지 않은 값 없음

JavaScript와 같은 일부 언어는 초기화되지 않은 변수나 누락된 속성에 대해 정의되지 않은 값의 개념을 사용합니다. 단순성을 위해, 이 개념을 피했습니다. 다른 언어로 정의되지 않은 오류 또는 공백 값으로 처리됩니다. 예를 들어, 초기화되지 않은 모든 변수는 공백 값으로 시작합니다. 모든 데이터 형식은 공백 값을 가질 수 있습니다.

Data types
연산자와 식별자
테이블
변수
명령적 논리
글로벌 지원
식 문법
YAML 수식 문법
캔버스 앱의 수식