Power Query : Nomor Hari Bulan Fiskal Hari Kerja

Saya memiliki kalender fiskal sederhana yang memiliki struktur ini:

Date    Fiscal Month    Fiscal MonthDays    IsWorkingDay
01.01.2021  12  40  FALSE
02.01.2021  12  41  FALSE
03.01.2021  12  42  FALSE
04.01.2021  1   1   TRUE
05.01.2021  1   2   TRUE
06.01.2021  1   3   TRUE
07.01.2021  1   4   TRUE
08.01.2021  1   5   TRUE
09.01.2021  1   6   FALSE
10.01.2021  1   7   FALSE

Saya memiliki kolom Hari Bulan Fiskal yang menunjukkan Nomor Hari berurutan, terlepas dari apakah itu hari kerja atau bukan. Sekarang saya ingin menambahkan kolom dengan nomor hari hanya untuk hari kerja.

Bagaimana Anda melakukan ini?


person joshua    schedule 28.02.2021    source sumber
comment
berapa angka hari tertinggi? 5? Jumlah hari dalam setahun?   -  person horseyride    schedule 28.02.2021
comment
Angka tertinggi adalah 42 untuk tahun Desember/53 minggu dimana bulan fiskal Desember memiliki 6 minggu, bukan 5   -  person joshua    schedule 28.02.2021


Jawaban (2)


Lihat apakah ini berhasil untuk Anda

Tambahkan indeks

Filter untuk Hari Kerja

Kelompokkan berdasarkan Bulan Anggaran (Anda mungkin ingin menambahkan Tahun Anggaran juga) dan menambahkan indeks ke-2. Memperluas

Gabungkan kembali ke tabel asli

Perhatikan bahwa WorkingDayNumber dari sebagian bulan di awal tabel akan memiliki angka yang salah. Anda mungkin ingin memfilter baris mana pun yang FiscalMonthnya tidak memiliki angka 1 di kolom FiscalMonthDays juga. Tidak diperhitungkan di sini

masukkan deskripsi gambar di sini

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Date", type date}}),
#"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 0, 1),

//filter for WorkingDay, Group, Add index based on Fiscal Month
#"Filtered Rows" = Table.SelectRows(#"Added Index", each ([IsWorkingDay] = true)),
#"Grouped Rows" = Table.Group(#"Filtered Rows", {"Fiscal Month"}, {{"Count", each Table.AddIndexColumn(_, "Index2", 1, 1), type table}}),
#"Expanded Count" = Table.ExpandTableColumn(#"Grouped Rows", "Count", {"Index", "Index2"}, {"Index", "Index2"}),

//Merge back to original table
#"Merged Queries" = Table.NestedJoin(#"Added Index",{"Index"},#"Expanded Count",{"Index"},"Table2",JoinKind.LeftOuter),
#"Expanded Table2" = Table.ExpandTableColumn(#"Merged Queries", "Table2", {"Index2"}, {"WorkingDaysNumber"}),
#"Sorted Rows" = Table.Sort(#"Expanded Table2",{{"Index", Order.Ascending}}),
#"Removed Columns" = Table.RemoveColumns(#"Sorted Rows",{"Index"})
in #"Removed Columns"
person horseyride    schedule 28.02.2021

Caranya sedikit berbeda (dengan asumsi Anda menggunakan data untuk satu tahun, jika tidak, Anda harus terlebih dahulu membuat kolom untuk bulan-bulan unik (format seperti YYYY_MM) lalu mengelompokkan tabel berdasarkan kolom tersebut, bukan kolom Bulan Fiskal):

let
    Source = Excel.CurrentWorkbook(){[Name="Data"]}[Content],
    group = Table.Group(Source, {"Fiscal Month","IsWorkingDay"}, {"temp", each _}),
    replace = Table.ReplaceValue(group,each [IsWorkingDay],"TRUE",(a,b,c)=>if b=c then Table.AddIndexColumn(a,"i",1) else a,{"temp"}),
    final = Table.Combine(replace[temp])
in
    final
person Aleksei Zhigulin    schedule 28.02.2021