Forum Discussion

LudivineLOU's avatar
LudivineLOU
Helper I
2 years ago
Solved

Lookup between 2 days

Hello, 

I have a price table with different article and price validate for the period between "valid from" until "valid to"

 

Table price :

Article      valid from       valid to              price

   A         01.01.2020         31.12.2021          10

   A         01.01.2022         15.06.2022           12

   A         16.06.2022         31.12.2030           14

   B         01.03.2020         31.12.2021          100

   B         01.01.2022         15.08.2022           120

   B         16.08.2022         31.12.2030           160

 

I have a table order with my order qty

 

order date      order        article    price

02.04.2020        raw1            A           ?*

02.04.2020        raw1            B            ?**

17.08.2022        raw1            B            ?***

 

I need to find the price of the article based on the order date. 

In the table bellow, the price must be 10 (?*), 100(?**), 160(?***)

 

Could you please help me with a formula dax ?

Thank you,

Best regards. 

 

 

 

 

 

 

 

 

 

 

  • Does it need to be DAX?

     

    Prices:

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("hY5RCoAgEESvEn6L7Kwl/tY1xLt5Fk/WalQWmTAsDOxjXggqpymntd4rSiuCkTAxScnJwoBLhVSQinpMciWxGHJN5T8W7vF8rtpDAvPNbp+7tmtMI/Sl7FvlX7g4+76zEzju", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Article = _t, #"valid from" = _t, #"valid to" = _t, price = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"Article", type text}, {"valid from", type date}, {"valid to", type date}, {"price", Currency.Type}},"de"),
        #"Trimmed Text" = Table.TransformColumns(#"Changed Type",{{"Article", Text.Trim, type text}})
    in
        #"Trimmed Text"

    Orders:

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjDSMzDRMzIwMlDSUTq0QKEosdzw0AIIG4gcgexYHYLKnKDKDM31DCxAyoxwK4sFAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"order date" = _t, #"order " = _t, article = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"order date", type date}, {"order ", type text}, {"article", type text}},"de"),
        #"Trimmed Text" = Table.TransformColumns(#"Changed Type",{{"order ", Text.Trim, type text}, {"article", Text.Trim, type text}}),
        #"Added Custom" = Table.AddColumn(
      #"Trimmed Text", 
      "Price", 
      (k) =>
        Table.SelectRows(
          Prices, 
          each [Article] = k[article] and [valid from] <= k[order date] and k[order date] <= [valid to]
        ){0}[price], 
      Currency.Type
    )
    in
        #"Added Custom"

     

     

2 Replies

  • Does it need to be DAX?

     

    Prices:

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("hY5RCoAgEESvEn6L7Kwl/tY1xLt5Fk/WalQWmTAsDOxjXggqpymntd4rSiuCkTAxScnJwoBLhVSQinpMciWxGHJN5T8W7vF8rtpDAvPNbp+7tmtMI/Sl7FvlX7g4+76zEzju", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Article = _t, #"valid from" = _t, #"valid to" = _t, price = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"Article", type text}, {"valid from", type date}, {"valid to", type date}, {"price", Currency.Type}},"de"),
        #"Trimmed Text" = Table.TransformColumns(#"Changed Type",{{"Article", Text.Trim, type text}})
    in
        #"Trimmed Text"

    Orders:

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjDSMzDRMzIwMlDSUTq0QKEosdzw0AIIG4gcgexYHYLKnKDKDM31DCxAyoxwK4sFAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"order date" = _t, #"order " = _t, article = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"order date", type date}, {"order ", type text}, {"article", type text}},"de"),
        #"Trimmed Text" = Table.TransformColumns(#"Changed Type",{{"order ", Text.Trim, type text}, {"article", Text.Trim, type text}}),
        #"Added Custom" = Table.AddColumn(
      #"Trimmed Text", 
      "Price", 
      (k) =>
        Table.SelectRows(
          Prices, 
          each [Article] = k[article] and [valid from] <= k[order date] and k[order date] <= [valid to]
        ){0}[price], 
      Currency.Type
    )
    in
        #"Added Custom"