식, 값 및 let 식

파워 쿼리 M 수식 언어 쿼리는 매시업 쿼리를 만드는 수식 단계로 구성됩니다. 수식 식을 계산하여 값을 생성할 수 있습니다. let 식은 계산되고 이름이 할당된 다음 in 문 뒤에 있는 후속 식에서 사용할 값 집합을 캡슐화합니다. 예를 들어 let 식은 Text.Proper()과 같고 적절한 경우 텍스트 값을 생성하는 원본 변수를 포함할 수 있습니다.

Let 식

let
    Source = Text.Proper("hello world")
in
    Source

위의 예제에서 Text.Proper("hello world")는 "헬로 월드"로 평가됩니다.

다음 섹션에서는 언어의 값 형식에 대해 설명합니다.

기본값

기본값은 숫자, 논리, 텍스트 또는 null과 같은 단일 부분 값입니다. null 값을 사용하여 데이터가 없음을 나타낼 수 있습니다.

Type 예제 값
이진 00 00 00 02 // 포인트 수(2)
날짜 5/23/2015
DateTime 2015년 5월 23일 오전 12:00:00
DateTimeZone 5/23/2015 12:00:00 AM -08:00
기간 15:35:00
논리 true 및 false
Null null
숫자 0, 1, -1, 1.5 및 2.3e-5
Text "abc"
시간 오후 12:34:12

함수 값

함수는 값이며, 인수로 호출될 때 새 값을 생성합니다. 함수는 함수의 매개 변수 를 괄호로 나열한 다음, 기호 =>로 이동하여 함수를 정의하는 식을 나열하여 작성됩니다. 예를 들어 매개 변수가 두 개 있고 parameter1 및 parameter2에 대한 계산을 수행하는 "MyFunction"이라는 함수를 만들려면 다음을 수행합니다.

let
    MyFunction = (parameter1, parameter2) => (parameter1 + parameter2) / 2
in
    MyFunction

MyFunction()을 호출하면 결과가 반환됩니다.

let
    Source = MyFunction(2, 4)
in
    Source

이 코드는 3 값을 생성합니다.

구조적 데이터 값

M 언어는 다음과 같은 구조적 데이터 값을 지원합니다.

참고 항목

구조화된 데이터에는 M 값이 포함될 수 있습니다. 몇 가지 예제를 보려면 구조화된 추가 데이터 예제를 참조 하세요.

List

목록은 중괄호 문자 { }로 묶인 값의 순서가 0부터 시작하는 시퀀스입니다. 중괄호 문자 { }는 인덱스 위치별로 목록에서 항목을 검색하는 데도 사용됩니다. [목록 값](#_List_value)을 참조하세요.

참고 항목

파워 쿼리 M은 무한 목록 크기를 지원하지만 목록이 리터럴로 작성되면 목록 길이가 고정됩니다. 예를 들어 {1, 2, 3}의 고정 길이는 3입니다.

다음은 몇 가지 목록 예제입니다.

유형
{123, true, "A"} 숫자, 논리 및 텍스트가 포함된 목록입니다.
{1, 2, 3} 숫자 목록
{
    {1, 2, 3},
    {4, 5, 6}
}
숫자 목록
{
    [CustomerID = 1, Name = "Bob", 전화 = "123-4567"],
    [CustomerID = 2, Name = "Jim", 전화 = "987-6543"]
}
레코드 목록
{123, true, "A"}{0} 목록에서 첫 번째 항목의 값을 가져옵니다. 이 식은 값 123을 반환합니다.
{
    {1, 2, 3},
    {4, 5, 6}
}{0}{1}
첫 번째 List 요소에서 두 번째 항목의 값을 가져옵니다. 이 식은 값 2를 반환합니다.

녹음

레코드는 필드 집합입니다. 필드는 이름/값 쌍으로, 이름은 필드의 레코드 내에서 고유한 텍스트 값입니다. 레코드 값의 구문을 사용하면 이름을 따옴표 없이 쓸 수 있으며, 식별자라고도 하는 폼입니다. 식별자는 다음 두 가지 형식을 사용할 수 있습니다.

  • OrderID와 같은 identifier_name.

  • #"식별자 이름"(예: #"Today's data is: ")

다음은 값이 1, 1, "Fishing rod" 및 100.00인 "OrderID", "CustomerID", "Item" 및 "Price"라는 필드를 포함하는 레코드입니다. 정사각형 중괄호 문자 [ ] 는 레코드 식의 시작과 끝을 나타내며 레코드에서 필드 값을 가져오는 데 사용됩니다. 다음 예제에서는 레코드와 항목 필드 값을 가져오는 방법을 보여 줍니다.

예제 레코드는 다음과 같습니다.

let Source =
        [
              OrderID = 1,
              CustomerID = 1,
              Item = "Fishing rod",
              Price = 100.00
        ]
in Source

항목의 값을 가져오려면 대괄호를 Source[Item]과 같이 사용합니다.

let Source =
    [
          OrderID = 1,
          CustomerID = 1,
          Item = "Fishing rod",
          Price = 100.00
    ]
in Source[Item] //equals "Fishing rod"

테이블

테이블은 명명된 열과 행으로 구성된 값 집합입니다. 열 형식은 암시적 또는 명시적일 수 있습니다. #table 사용하여 열 이름 목록과 행 목록을 만들 수 있습니다. 값 테이블은 목록의 목록입니다. 중괄호 문자 { }는 인덱스 위치별로 Table에서 행을 검색하는 데도 사용됩니다(예제 3으로 이동 - 인덱스 위치별로 테이블에서 행 가져오기).

예제 1 - 암시적 열 형식으로 테이블 만들기

let
  Source = #table(
    {"OrderID", "CustomerID", "Item", "Price"},
      {
          {1, 1, "Fishing rod", 100.00},
          {2, 1, "1 lb. worms", 5.00}
      })
in
    Source

예제 2 - 명시적 열 형식의 테이블 만들기

let
    Source = #table(
    type table [OrderID = number, CustomerID = number, Item = text, Price = number],
        {
                {1, 1, "Fishing rod", 100.00},
             {2, 1, "1 lb. worms", 5.00}
        }
    )
in
    Source

위의 두 예제 모두 다음 셰이프가 있는 테이블을 만듭니다.

OrderID CustomerID Item 가격
1 1 낚싯대 100.00
2 1 1lb. worms 5.00

예제 3 - 인덱스 위치별로 테이블에서 행 가져오기

let
    Source = #table(
    type table [OrderID = number, CustomerID = number, Item = text, Price = number],
        {
              {1, 1, "Fishing rod", 100.00},
              {2, 1, "1 lb. worms", 5.00}
         }
    )
in
    Source{1}

이 식은 다음 레코드를 반환합니다.

필드
Orderid 2
Customerid 1
항목 1lb. worms
가격 5

추가 구조화된 데이터 예제

구조화된 데이터에는 M 값이 포함될 수 있습니다. 다음 몇 가지 예를 참조하세요.

예제 1 - [기본](#_Primitive_value_1) 값, [함수](#_Function_value) 및 [레코드](#_Record_value) 포함 목록

let
    Source =
{
   1,
   "Bob",
   DateTime.ToText(DateTime.LocalNow(), "yyyy-MM-dd"),
   [OrderID = 1, CustomerID = 1, Item = "Fishing rod", Price = 100.0]
}
in
    Source

이 식을 평가하면 다음과 같이 시각화할 수 있습니다.

List Example 1

예제 2 - 기본값 및 중첩 레코드를 포함하는 레코드

let
    Source = [CustomerID = 1, Name = "Bob", Phone = "123-4567", Orders =
        {
              [OrderID = 1, CustomerID = 1, Item = "Fishing rod", Price = 100.0],
            [OrderID = 2, CustomerID = 1, Item = "1 lb. worms", Price = 5.0]
        }]
in
    Source

이 식을 평가하면 다음과 같이 시각화할 수 있습니다.

List Example 2

참고 항목

많은 값을 식으로 리터럴로 작성할 수 있지만 값은 식이 아닙니다. 예를 들어 식 1은 값 1로 계산됩니다. 식 1+1은 값 2로 계산됩니다. 이러한 구분은 미묘하지만 중요합니다. 식은 평가를 위한 레시피입니다. 값은 평가의 결과입니다.

If 식

if 식은 논리 조건에 따라 두 식 중에서 선택합니다. 예시:

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

논리 식(2 1)이 true이면 첫 번째 식(2 + 2 > )이 선택되고 두 번째 식(1 + 1)이 false이면 선택됩니다. 선택한 식(이 경우 2 + 2)이 계산되고 if 식(4)의 결과가 됩니다.