Forum Discussion
Single column containing two types for references with diff prefix but dynamic numbers changing
- 3 years ago
Hi rinaredelinghuy ,
The first thing I'd do would be to create new columns in Power Query with extra descriptors that I could later use to simplify writing measures. For example:
New columns in PQ:
referenceType = if Text.StartsWith([ReferenceNumber], "R") then "Picking" if Text.StartsWith([ReferenceNumber], "NB") then "Checking" else "Other"createDateOnly = Date.From([CreateDate])createDateHourOnly = Time.StartOfHour([CreateDate])This then makes writing explicit measures and creating visuals super-easy. Sums are just:
_confirmedPickingQty = CALCULATE( SUM(yourTable[ConfirmedQuantity]), yourTable[referenceType] = "Picking" )Or you could even just use a simple SUM(yourTable[ConfirmedQuantity]) measure, and use your new [referenceType], [createDateOnly], and [createDateHourOnly] dimensions in a visual to have the data split out correctly.
Pete
- 3 years ago
Ok, that actually simplifies things a bit, I think.
All we need is the [ReferenceNumber] value without the 'R:' or 'NB:' portion. You may already have this as [order no], [product], or [batch] but, in case you don't, you can get it into another new column something like this:
refOnly = Text.AfterDelimiter([ReferenceNumber], ":")Once you have that, you just need two simple measures:
_noofPicked = SUM(yourTable[ConfirmedQuantity]) // and _noofChecked = SUM(yourTable[CheckQuantity])You should now be able to acccurately visualise what you need using any/all of your existing and new dimensions, and these measures.
If you're struggling to get the output you want with what we've created so far, just post an example of exactly what you want it look like on here and I'll help you out.
Pete
- 3 years ago
Ok, give this a go. Just paste this into a blank query in Advanced Editor:
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45W8gnQNTSwNDJV0lEKyEzOzsxLB7KCrMzMjS2BDEMLCwMzIG0AxrE6cPXGuNUb41LvnJEK0+DnBNRhYo6kA4KRdJhi02GE5CYjMI6NBQA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [OrderNumber = _t, RefType = _t, ReferenceNumber = _t, IssueLineId = _t, ConfirmedQuantity = _t, CheckQuantity = _t]), chgTypes = Table.TransformColumnTypes(Source,{{"OrderNumber", type text}, {"RefType", type text}, {"ReferenceNumber", type text}, {"IssueLineId", Int64.Type}, {"ConfirmedQuantity", Int64.Type}, {"CheckQuantity", Int64.Type}}), groupIssueLineId = Table.Group(chgTypes, {"IssueLineId"}, {{"data", each _, type table [OrderNumber=nullable text, RefType=nullable text, ReferenceNumber=nullable text, IssueLineId=nullable number, ConfirmedQuantity=nullable number, CheckQuantity=nullable number]}, {"newConfirmedQty", each List.Sum([CheckQuantity]), type nullable number}}), expandDataColumn = Table.ExpandTableColumn(groupIssueLineId, "data", {"OrderNumber", "RefType", "ReferenceNumber", "ConfirmedQuantity", "CheckQuantity"}, {"OrderNumber", "RefType", "ReferenceNumber", "ConfirmedQuantity", "CheckQuantity"}) in expandDataColumnThis gives me the following output:
This works at the [IssueLineId] level but, if you had more dimensions, such as [product] etc. you'd want to add them into the groupRows step to ensure you were getting the [CheckQuantity] value over the correct subset of rows.
Pete
Hi rinaredelinghuy ,
The first thing I'd do would be to create new columns in Power Query with extra descriptors that I could later use to simplify writing measures. For example:
New columns in PQ:
referenceType =
if Text.StartsWith([ReferenceNumber], "R") then "Picking"
if Text.StartsWith([ReferenceNumber], "NB") then "Checking"
else "Other"
createDateOnly =
Date.From([CreateDate])
createDateHourOnly =
Time.StartOfHour([CreateDate])
This then makes writing explicit measures and creating visuals super-easy. Sums are just:
_confirmedPickingQty =
CALCULATE(
SUM(yourTable[ConfirmedQuantity]),
yourTable[referenceType] = "Picking"
)
Or you could even just use a simple SUM(yourTable[ConfirmedQuantity]) measure, and use your new [referenceType], [createDateOnly], and [createDateHourOnly] dimensions in a visual to have the data split out correctly.
Pete
- rinaredelinghuy3 years agoHelper I
Hi Pete,
Thank you so much, works perfectly.
Just one more issue I'm faced with now:
Whilst picking is executed R: will have a confirmed qty against it, but as soon as it moves over to checking, a NB no. is created with the qty checked, automatically zeroing out the pick confirmed qty.
How do I get the checked qty to be inserted back into the confirmed qty, as both these actions are measured seperately from a productivity point of view?
- BA_Pete3 years agoSuper User
*EDIT* Never mind, I see what you mean now. A new row is created for the checking portion of the same order. I assume that somewhere in your source table there is a product code column, so each product code gets its own picking row against the order, and its own checking row?
Ignore this:
I'm not sure I understand what you mean by "automatically zeroing out the pick confirmed qty".
Do you mean that the actual data in the [ConfirmedQuantity] column is overwritten with a zero at some point?
Pete
- rinaredelinghuy3 years agoHelper I
*EDIT* Never mind, I see what you mean now. A new row is created for the checking portion of the same order. I assume that somewhere in your source table there is a product code column, so each product code gets its own picking row against the order, and its own checking row?
Correct.
Instructions are generated for a picking actions, once done, then checking action is required. Unfortunately these instructions are shared accross the two actions (R: vs NB:)
Picking is executed based on the order no; product;batch;area;picklocation - once prod's have been picked it needs to be verified that it matches the order qty, ensuring the right product vs batch has been picked, hence checking validation is required.
- rinaredelinghuy3 years agoHelper I
To summarize I require a solution to:
if dropsequence for checkqty is the same as confirmedqty then update confirmedqty with checkqty else leave as is
The sum for the checkqty(NB) must equal the confirmedqty(R) (in some instances the checkqty might have more lines than the confirmedqty, but the sum must match overall