캘린더 테이블에 "헤세이 31 년/레이와 원년"이라는 제목의 열을 추가하고 싶습니다.
4833 단어 PowerBIDAXPowerQuery
DAX에서
날짜 열 [Date]에서 FORMAT 함수 (DAX)로 "ggge 년"을 지정해도 날짜에 대한 원호 표기가 되기 때문에 조금 손을 더한다.
캘린더 테이블에 계산 열을 추가하는 것이 좋습니다.ggge+ =
CONCATENATEX(
DISTINCT(
UNION(
ROW(
"ggge", FORMAT(DATE(YEAR([Date]), 1, 1), "ggge年")
),
ROW(
"ggge", FORMAT([Date], "ggge年")
)
)
),[ggge]
,"/"
)
"ggge년"의 이용에 대해서는, "모델의 언어"가 ja-jp일 때에 좋은 곳에서 사용하면 좋을 것입니다. 새로운 원호에 대한 지원은 그중 될까.
원래 FORMAT 함수의 경우,
FORMAT 함수(DAX) | Microsoft Docs
CAUTION
The format strings supported as an argument to the DAX FORMAT function are based on the format strings used by Visual Basic (OLE Automation), not on the format strings used by the .NET Framework. Therefore, you might get unexpected results or an error if the argument does not match any defined format strings. For example, “p” as an abbreviation for “Percent” is not supported. Strings that you provide as an argument to the FORMAT function that are not included in the list of predefined format strings are handled as part of a custom format string, or as a string literal.
그러니까.
Power Query에서
보고서를 만들 때마다 Power BI Desktop을 사용하여 복사하는 대신 Power BI 데이터 흐름에서 사용합니다.
함수 부분만(_date as date) as record =>
let
EraData = [
_Year = Date.Year(_date),
_Era1 = Table.SelectRows(
Table.SelectRows(
Source,
each [EndDate] >= #date(_Year, 1, 1)
),
each [StartDate] <= Date.EndOfYear(_date)
),
_Era2 = Table.AddColumn(
_Era1,
"ggge",
each
let
_StartYear = Date.Year([StartDate])
in
[EraName]
& (
if
_Year = _StartYear
then
"元"
else
Text.From(_Year - _StartYear + 1)
)
& "年"
),
_Era3 = Table.Sort(
_Era2,
{"StartDate", Order.Ascending}
)[ggge],
_Era4 = Table.SelectRows(
_Era2,
each
[StartDate] <= _date
and [EndDate] >= _date
)[ggge],
EraDate = [
#"ggge+" =
if
List.IsEmpty(_Era3)
then
Text.From(_Year) & "年"
else
Text.Combine( _Era3, "/"),
gggeYMD = Date.ToText(_date, _Era4{0}? & "MM月dd日", "ja-jp")
]
][EraDate],
Source = #table(
type table [
StartDate = Date.Type,
EndDate = Date.Type,
EraName = Text.Type
],
{
{#date(1868, 1, 25), #date(1916, 7, 29), "明治"},
{#date(1912, 7, 30), #date(1926, 12, 24), "大正"},
{#date(1926, 12, 25), #date(1989, 1, 7), "昭和"},
{#date(1989, 1, 8), #date(2019, 4, 30), "平成"},
{#date(2019, 5, 1), #date(9999, 12, 31), "令和"}
}
)
in
EraData
Power BI 데이터 흐름의 Power Query Online에는 사용자 지정 함수 호출 명령이 없으므로 Table.AddColumn(캘린더 테이블, each 함수 이름([날짜 열]))이라는 느낌으로 적용하는 단계를 추가하면 됩니다.
생각했어요🙄
캘린더 테이블에는 마음이 멀어지는 행수를 안는 일은 없고, Power BI 데이터 플로우로 공유했다고 해도 갱신하는 것은 거의 전무이므로, 다소 무차해도 전혀 문제가 되지 않지요.
Power Query 기술은 이것에 한정되지 않지만, 로직을 그대로 코드로 변환하는 것이 아니라, 결정표로부터 결과를 읽는 로직을 코드로 변환하면 좋다고 생각하는 것.
기타
ggge+ =
CONCATENATEX(
DISTINCT(
UNION(
ROW(
"ggge", FORMAT(DATE(YEAR([Date]), 1, 1), "ggge年")
),
ROW(
"ggge", FORMAT([Date], "ggge年")
)
)
),[ggge]
,"/"
)
보고서를 만들 때마다 Power BI Desktop을 사용하여 복사하는 대신 Power BI 데이터 흐름에서 사용합니다.
함수 부분만
(_date as date) as record =>
let
EraData = [
_Year = Date.Year(_date),
_Era1 = Table.SelectRows(
Table.SelectRows(
Source,
each [EndDate] >= #date(_Year, 1, 1)
),
each [StartDate] <= Date.EndOfYear(_date)
),
_Era2 = Table.AddColumn(
_Era1,
"ggge",
each
let
_StartYear = Date.Year([StartDate])
in
[EraName]
& (
if
_Year = _StartYear
then
"元"
else
Text.From(_Year - _StartYear + 1)
)
& "年"
),
_Era3 = Table.Sort(
_Era2,
{"StartDate", Order.Ascending}
)[ggge],
_Era4 = Table.SelectRows(
_Era2,
each
[StartDate] <= _date
and [EndDate] >= _date
)[ggge],
EraDate = [
#"ggge+" =
if
List.IsEmpty(_Era3)
then
Text.From(_Year) & "年"
else
Text.Combine( _Era3, "/"),
gggeYMD = Date.ToText(_date, _Era4{0}? & "MM月dd日", "ja-jp")
]
][EraDate],
Source = #table(
type table [
StartDate = Date.Type,
EndDate = Date.Type,
EraName = Text.Type
],
{
{#date(1868, 1, 25), #date(1916, 7, 29), "明治"},
{#date(1912, 7, 30), #date(1926, 12, 24), "大正"},
{#date(1926, 12, 25), #date(1989, 1, 7), "昭和"},
{#date(1989, 1, 8), #date(2019, 4, 30), "平成"},
{#date(2019, 5, 1), #date(9999, 12, 31), "令和"}
}
)
in
EraData
Power BI 데이터 흐름의 Power Query Online에는 사용자 지정 함수 호출 명령이 없으므로 Table.AddColumn(캘린더 테이블, each 함수 이름([날짜 열]))이라는 느낌으로 적용하는 단계를 추가하면 됩니다.
생각했어요🙄
캘린더 테이블에는 마음이 멀어지는 행수를 안는 일은 없고, Power BI 데이터 플로우로 공유했다고 해도 갱신하는 것은 거의 전무이므로, 다소 무차해도 전혀 문제가 되지 않지요.
Power Query 기술은 이것에 한정되지 않지만, 로직을 그대로 코드로 변환하는 것이 아니라, 결정표로부터 결과를 읽는 로직을 코드로 변환하면 좋다고 생각하는 것.
기타
Reference
이 문제에 관하여(캘린더 테이블에 "헤세이 31 년/레이와 원년"이라는 제목의 열을 추가하고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/PowerBIxyz/items/a716306bb38c743a2295텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)