식, 값 및 let 식
파워 쿼리 M 수식 언어 쿼리는 매시업 쿼리를 만드는 수식 식 단계로 구성됩니다. 수식 식을 계산하여 값을 생성할 수 있습니다. let 식은 계산되고 이름이 할당된 다음 in 문 뒤에 있는 후속 식에서 사용할 값 집합을 캡슐화합니다. 예를 들어 let 식은 Text.Proper 값과 같고 적절한 경우 텍스트 값을 생성하는 원본 변수를 포함할 수 있습니다.
Let 식
let
Source = Text.Proper("hello world")
in
Source
위의 Text.Proper("hello world")
예제에서는 .로 평가됩니다 "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 |
number | 0, 1, -1, 1.5 및 2.3e-5 |
Text | "abc" |
Time | 오후 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부터 시작하는 시퀀스입니다. 중괄호 문자 { }는 인덱스 위치별로 목록에서 항목을 검색하는 데도 사용됩니다. 자세한 내용은 목록 값으로 이동합니다.
참고 항목
파워 쿼리 M은 무한 목록 크기를 지원하지만 목록이 리터럴로 작성되면 목록 길이가 고정됩니다. 예를 들어 {1, 2, 3}의 고정 길이는 3입니다.
다음은 몇 가지 목록 예제입니다.
값 | Type |
---|---|
{123, true, "A"} | 숫자, 논리 및 텍스트가 포함된 목록입니다. |
{1, 2, 3} | 숫자 목록 |
{ {1, 2, 3}, {4, 5, 6} } |
숫자 목록 |
{ [CustomerID = 1, Name = "Bob", Phone = "123-4567"], [CustomerID = 2, Name = "Jim", Phone = "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 사용하여 열 이름 목록과 행 목록을 만들 수 있습니다. 값 테이블은 목록의 목록입니다. 중괄호 문자 { }는 인덱스 위치별로 테이블에서 행을 검색하는 데도 사용됩니다(예제 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 |
Price | 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
이 식을 평가하면 다음과 같이 시각화할 수 있습니다.
예제 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
이 식을 평가하면 다음과 같이 시각화할 수 있습니다.
참고 항목
많은 값을 식으로 리터럴로 작성할 수 있지만 값은 식이 아닙니다. 예를 들어 식 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)의 결과가 됩니다.