Forum Discussion

NidhiMangtani's avatar
NidhiMangtani
Contributor III
3 years ago

Query on annotation data copy

Hi All, I am aware of various options available for copying scenario data in OneStream. These options (data management or custom calculate) usually copy only periodic data across scenarios. Any ide...
  • PeterFu's avatar
    PeterFu
    3 years ago

    Hi,

     

    If you create a Finance Business Rule and under CustomCalculate you run this syntax, api.Data.SetDataAttachmentText(). That should copy your annotation, but you challenge will then be to make it more dynamic. Probably use sql to create a data table for data attachments.

     

     

    Peter

     

  • SWilyums's avatar
    2 months ago

    Here is an example I used to copy VarianceExplantions from one scenario to another.  I am only copying the text values not files.  I also run it from a DM Step using Custom Calculate.

    #Region "Seed Prior Fcst VarianceExplanations to current Fcst"
    Else If args.CustomCalculateArgs.FunctionName.XFEqualsIgnoreCase("Seed_VarExp_to_Curr_LE") Then
    'Query DataAttachment table for VarianceExplanation values for the sourceScenario
    'Write those values to a datatable (in-memory)
    'Loop through the rows in the datatable and use api.Data.SetDataAttachmentText to assign the values to the WFScenario
    Dim sourceScenario As String = args.CustomCalculateArgs.NameValuePairs("sourceScenario")
    Dim povEntity As String = api.Pov.Entity.Name
    'AttachmentType = View|200 = Annotation|220 = Assumptions|221 = AuditComment|222 = Footnote|223 = VarianceExplanation
    Dim sql As New Text.StringBuilder()
    sql.AppendLine("SELECT *")
    sql.AppendLine("FROM DataAttachment ")
    sql.AppendLine("WITH (NOLOCK) ")
    sql.AppendLine("WHERE Time = '"& povYear & "M12" & "' ")
    sql.AppendLine("AND ")
    sql.AppendLine("Scenario = '" & sourceScenario & "' ")
    sql.AppendLine("AND ")
    sql.AppendLine("Cube = 'XXXX' ")
    sql.AppendLine("AND ")
    sql.AppendLine("Entity = '" & povEntity & "' ")
    sql.AppendLine("AND ")
    sql.AppendLine("Cons = 'USD' ")
    sql.AppendLine("AND ")
    sql.AppendLine("AttachmentType = '223' ") 'View Dimension
     
    Using dbConnApp As DBConnInfo = BRApi.Database.CreateApplicationDbConnInfo(si)
       Using dt As DataTable = BRAPi.Database.ExecuteSql(dbConnApp, sql.ToString,False)
          If dt.Rows.Count > 0 Then
            For Each dr As DataRow In dt.Rows
            api.Data.SetDataAttachmentText("A#" & dr.Item("Account") & ":V#VarianceExplanation:F#EndBalLoad:O#BeforeAdj:I#None:U1#" & dr.Item("UD1") & ":U2#No_BU:U3#No_Loc:U4#None:U5#None:U6#None:U7#Plan:U8#None", dr.Item("Text"), True)
            Next
          End If
       End Using
     End Using
    #End Region