SSIS - Calculer le solde d'ouverture et de clôture


Youssouf Sultan

J'ai besoin de calculer le solde d'ouverture et le solde de clôture dans SSIS. J'ai les données ci-dessous en entrée.

invoice_date    amount
12/4/2016       4000
12/5/2016       5000
12/6/2016       7500
12/7/2016       5000
12/8/2016       8000

Je veux la sortie comme ci-dessous:

Opening Balance    4000
Closing Balance    8000

Comment puis-je y parvenir dans SSIS ?

Remarque : À faire en utilisant uniquement des transformations. Aucune tâche d'exécution SQL ou commande OLEDEB requise.

allons

Dans ma réponse, je supposerai que votre source est un OLEDB Sourceet votre destination est unFlat File

Vous devez effectuer les étapes suivantes :

  1. Ajouter un autre Dataflow Task (en supposant que nema = DFT Import)
  2. Dans DFT ImportAjoutez votre OLEDB Source, un Script Componentet votreFlatFile Destination
  3. Dans la marque de composant de script invoice_dateet les amountcolonnes comme colonnes d'entrée

entrez la description de l'image ici

  1. In the Script go to Inputs and Outputs Tab and make your Output Buffer asynchronous

entrez la description de l'image ici

  1. Create 2 Output Columns *(Desc of type DT_STR and amount of TYPE DT_I4)

entrez la description de l'image ici

  1. In your script write the following code: (Vb.net)

    Dim MinDate, MaxDate As Date
    Dim MinAmount, MaxAmount As Integer
    Dim intRowCount As Integer = 0
    Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
    
        intRowCount += 1
    
        If intRowCount = 1 Then
    
            MinDate = Row.invoicedate
            MaxDate = Row.invoicedate
            MinAmount = Row.amount
            MaxAmount = Row.amount
    
        Else
    
            If Row.invoicedate < MinDate Then
    
                MinDate = Row.invoicedate
                MinAmount = Row.amount
    
            ElseIf Row.invoicedate > MaxDate Then
    
                MaxDate = Row.invoicedate
                MaxAmount = Row.amount
    
            End If
    
        End If
    
    End Sub
    
    Public Overrides Sub PostExecute()
        MyBase.PostExecute()
    
        Output0Buffer.AddRow()
        Output0Buffer.Desc = "Opening Balance"
        Output0Buffer.amount = MinAmount
    
    
        Output0Buffer.AddRow()
        Output0Buffer.Desc = "Closing Balance"
        Output0Buffer.amount = MaxAmount
    
    End Sub
    
  2. Map your output Columns to the Destination Columns

Note: if your source column datatypes are not datetime and integer you have to perform some casting method in the script

OTHER METHOD

  1. Add an Execute SQL Task to get the row coubt of the source Table
  2. Store the count value (Resultset) into a SSIS Variable (ex: User::intCount)

you can use a dataflow task containing an OLEDB Source and a Rowcount component instead of the first two steps and store rowcount result into a variable

  1. Follow the same steps from the first method
  2. Dans le script, ajoutez en User::intCounttant que variables en lecture seule
  3. Dans le script, écrivez le code suivant

    Dim MinDate, MaxDate As Date
    Dim MinAmount, MaxAmount As Integer
    Dim intRowCount As Integer = 0
    Dim intCurrentRow As Integer = 0
    
    Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
    
        intCurrentRow += 1
    
        If intCurrentRow = 1 Then
    
            MinDate = Row.invoicedate
            MaxDate = Row.invoicedate
            MinAmount = Row.amount
            MaxAmount = Row.amount
    
        Else
    
            If Row.invoicedate < MinDate Then
    
                MinDate = Row.invoicedate
                MinAmount = Row.amount
    
            ElseIf Row.invoicedate > MaxDate Then
    
                MaxDate = Row.invoicedate
                MaxAmount = Row.amount
    
            End If
    
            If intCurrentRow = intRowCount
    
    
            Output0Buffer.AddRow()
            Output0Buffer.Desc = "Opening Balance"
            Output0Buffer.amount = MinAmount
    
            Output0Buffer.AddRow()
            Output0Buffer.Desc = "Closing Balance"
            Output0Buffer.amount = MaxAmount
    
           End If
    
        End If
    
    End Sub
    
    Public Overrides Sub PreExecute()
        MyBase.PreExecute()
    
        IntRowCount = Variables.intCount
    
    End Sub
    

Articles connexes


Calculer le solde de clôture mois par mois

Axolotl: Je veux calculer le solde de clôture mois par mois. J'ai deux tables: tblOpenBalance et tblSales. Je veux cette sortie: id Year Jan Feb Mar Apr May Jun Jul Aug Sep Oct

Obtenez le solde d'ouverture

Doonie Darkoo J'ai ce tableau avec des exemples de données. Je veux calculer le solde d'ouverture à partir des données présentes dans la DB. DROP TABLE VoucherPayment; CREATE TABLE VoucherPayment ( VoucherID Int, VoucherName nvarchar(25), Credit int, Debit int

Somme des soldes d'ouverture et de clôture

Doonie Darkoo J'ai ce tableau et des exemples de données et je veux calculer le solde d'ouverture et de clôture. Je veux que ce soit en 6 colonnes à- dire CreditOpening, DebitOpening, Credit, Debit, CreditClosing,DebitClosing Voici la structure de la table et

Solde d'ouverture et de clôture

Doonie Darkoo J'essaie d'obtenir le solde d'ouverture et de clôture dans ma requête. Ceci est ma requête SELECT [Voucher].[TransactionCode] [VoucherNo], SUM([Detail].[DrAmount]) [DrAmount], SUM([Detail].[CrAmount]) [CrAmount] FROM [FICO].[tbl_TransactionMas

Comment trouver les soldes d'ouverture et de clôture

céphalopode Quelqu'un pourrait-il s'il vous plaît m'aider à trouver opening_balet closing_bal. J'ai tous les agrégats de transaction qui se sont produits dans le mois (nouveaux / transferts / sorties, etc.) et j'ai également le solde de clôture du mois dernier

Solde d'ouverture et solde de clôture de MySQL

Isha Technohub Je développe un logiciel de comptabilité. Vous voulez maintenir un équilibre d'ouverture et de clôture quotidien. Le solde d'ouverture d'une date est le solde de clôture de la date précédente. Chaque fois qu'une transaction pour une date spécifi

Python_Calculer le solde du prêt d'ouverture et de clôture

Shafa Mammad J'ai besoin de calculer le solde d'ouverture et de clôture du prêt en utilisant Python (boucle). Je suis nouveau en Python et par conséquent, j'ai quelques difficultés à cela. En faisant quelques recherches sur google, j'écris le code suivant : f