데이터 테이블을 새로 고칠 때 지속적으로 새로운 storedId와 newproductID가있는 SQL에이 테이블이 있습니다.
StoreID ProductID Quantity
1 A 4
1 B 5
1 B 9
2 B 3
2 C 4
.
.
7 F 2
내 StoreID를 함께 그룹화하고 아래 표와 같이 수량 합계로 제품 ID를 바꾸고 싶습니다. 각 상점에는 0 ~ 30 개의 제품이있을 수 있습니다. 따라서 30 개의 제품이있는 경우 "productID"열 30 개와 "SumQuantity"열 30 개가 필요합니다.
StoredId ProductId1 ProductID2 ... SumQuantity1 SumQuantity2 ...
1 A B 4 14
2 B C 3 4
.
.
7 F 2
.
.
파워 쿼리 Excel에서 어떻게 할 수 있습니까?
-
답변 # 1
-
답변 # 2
사용자 지정 코딩 없이는이를 수행하기가 어렵습니다.
기본적으로 ..
StoreID 및 ProductID로 그룹화 한 다음 수량 결합
StoreID에서 다시 그룹화 한 다음 ProductID 및 Quantity에 대한 행을 세미콜론 구분 기호로 결합합니다.
구분 기호에서 열을 분할합니다. 사전에 필요한 열 수를 모르기 때문에 4 줄의 사용자 지정 코드가 필요합니다.
위의 단계에서 필요한 형식 인 텍스트의 숫자를 숫자로 변환합니다.
견본:
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], // group and sum quantities #"Grouped Rows" = Table.Group(Source, {"StoreID", "ProductID"}, {{"Quantity", each List.Sum([Quantity]), type number}}), // group second time and combine ProductID and Quantity from different rows onto a single row with ; as delimiter #"Grouped Rows1" = Table.Group(#"Grouped Rows", {"StoreID"}, {{"ProductID", each Text.Combine(List.Transform([ProductID], each Text.From(_)), ";"), type text},{"Quantity", each Text.Combine(List.Transform([Quantity], each Text.From(_)), ";"), type text}}), //Dynamically split the two delimited columns into any number of columns DynamicColumnList = List.Transform({1 ..List.Max(Table.AddColumn(#"Grouped Rows1","Custom", each List.Count(Text.PositionOfAny([ProductID],{";"},Occurrence.All)))[Custom])+1}, each "ProductID." & Text.From(_)), DynamicColumnList2 = List.Transform({1 ..List.Max(Table.AddColumn(#"Grouped Rows1","Custom", each List.Count(Text.PositionOfAny([Quantity],{";"},Occurrence.All)))[Custom])+1}, each "Quantity." & Text.From(_)), #"Split Column by Delimiter" = Table.SplitColumn( #"Grouped Rows1", "ProductID", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), DynamicColumnList), #"Split Column by Delimiter2" = Table.SplitColumn( #"Split Column by Delimiter" , "Quantity", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), DynamicColumnList2), // convert numerical to numbers #"ConvertToNumbers" = Table.TransformColumnTypes (#"Split Column by Delimiter2", List.Transform ( List.Difference(Table.ColumnNames(#"Split Column by Delimiter2"),Table.ColumnNames(#"Split Column by Delimiter")),each {_,type number})) in #"ConvertToNumbers"
관련 자료
- SQL Query - sql 쿼리 - 이 엑셀 수식을 쿼리로 변환하는 방법
- excel - null 파워 쿼리 인 경우 값 위로 이동
- c# - Excel에서 sqlite로 쿼리를 단순화하는 방법은 무엇입니까?
- powerbi - R 데이터 프레임을 Power Query 테이블로 내보내는 방법
- Excel SQL 쿼리에서 열 데이터 누적
- c++ - MAX () 함수 또는 그룹화 문을 추가 할 때마다 쿼리가 중단됩니다
- powerquery - 파워 쿼리 - 여러 성적을 가진 모든 학생의 평균 성적을 확인할 수있는 방법이 있습니까?
- excel - 파워 쿼리, 새로 고치는 동안 출력 테이블 크기를 동일하게 유지
- powerquery - 파워 쿼리 - 값을 기준으로 행 중복
- Oracle SQL에서 쿼리를 수행하여 시간 간격을 가져오고 특정 필드별로 그룹화하는 방법
- powerquery - excel - 행이 누락 된 경우에도 파워 쿼리에서 테이블을 업데이트하는 방법이 있습니까?
- powerquery - 파워 쿼리 - left (a4 기반 오른쪽 함수를 사용하여 열을 삽입하는 방법)
- powerbi - 파워 쿼리 편집기를 사용하여 Office Excel에서 데이터를 올바르게 표시하는 방법은 무엇입니까?
- excel - 파워 쿼리 고유 목록을 테이블에 병합
- sql - Excel Oracle DB 쿼리를 Python Pandas로 변환
- excel - 파워 쿼리의 조건부 열
왜 그렇게 끔찍한 형식의 데이터를 원하는지 잘 모르겠지만 여기에 내가 접근하는 방법이 있습니다.
첫 번째 그룹화
StoreID
과ProductID
@horseyride가 제안한 것과 동일하지만 거기에서 다른 길을갑니다.다음 단계는
StoreID
각 상점에 대해 원하는 테이블을 구성하십시오. 이 단계 결과는 편집기에서 다음과 유사합니다 (하단의 미리보기는 선택한 셀에 포함 된 내용입니다)."제품"에 대해이 테이블이 어떻게 구성되는지 살펴 보겠습니다.
이 목록
[ProductID]
현재 상점과 연관된 ID 목록입니다. 선택한 셀의 경우{"A","B"}
. 두 개의 값이 있으므로List.Count
따라서 위의 내용은 다음과 같이 단순화됩니다.목록 변환 후 이것은 단순히
위 스크린 샷의 미리보기처럼 보입니다.
수량 데이터의 구성은 유사합니다. 해당 열이 정의 된 후 남은 것은 다음 두 열을 모두 확장하는 것입니다.
<시간 />편집하다:
@horseyrides가 지적했듯이 확장은 동적으로 만들어야하므로 확장 할 열 수를 결정하기 위해 사용자 지정 그룹에 열을 추가했습니다. 이 숫자는 한 상점의 최대 제품 수이며 열 이름 목록을 생성하는 데 사용됩니다.