Help me met het schrijven van Ruby-code voor het genereren van rapporten
description
Met deze prompt krijg je op maat gemaakte Ruby-code om snel en efficiënt rapporten te genereren die aansluiten bij jouw specifieke data en behoeften. Je bespaart tijd en vermijdt fouten door handmatige rapportage, en je leert hoe je Ruby-gem's kunt gebruiken om professionele rapporten te maken.
prompt
Help me Ruby-code te schrijven die rapporten genereert volgens de volgende specificaties: <beschrijf het type rapport en de gewenste inhoud>. Geef aan welke gege ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier is een voorbeeld van Ruby-code die rapporten genereert met de gevraagde specificaties: totaal omzet, gemiddelde orderwaarde en de top 5 producten. We gebruiken hiervoor de Ruby-gem 'csv' voor het lezen van het CSV-bestand en 'terminal-table' voor een overzichtelijke rapportage in de terminal.
Benodigdheden:
- Ruby geïnstalleerd op je systeem.
- De gem 'terminal-table' geïnstalleerd (`gem install terminal-table`).
Stappen:
1. Lees de data uit 'sales_data.csv'.
2. Bereken de totale omzet.
3. Bereken de gemiddelde orderwaarde.
4. Bepaal de top 5 producten op basis van verkochte hoeveelheid of omzet.
5. Toon het rapport overzichtelijk in de terminal.
Hier is de voorbeeldcode:
```ruby
require 'csv'
require 'terminal-table'
# Pad naar je CSV-bestand
bestand = 'sales_data.csv'
# Data opslag
total_omzet = 0.0
totaal_aantal_orders = 0
product_verkoop = Hash.new { |hash, key| hash[key] = { omzet: 0.0, aantal: 0 } }
# Lees de CSV en verzamel gegevens
CSV.foreach(bestand, headers: true) do |row|
# Pas kolomnamen aan naar jouw CSV-structuur
order_id = row['order_id']
product = row['product']
prijs = row['price'].to_f
aantal = row['quantity'].to_i
omzet = prijs * aantal
total_omzet += omzet
totaal_aantal_orders += 1
# Verwerk productgegevens
product_verkoop[product][:omzet] += omzet
product_verkoop[product][:aantal] += aantal
end
# Berekeningen
gemiddelde_orderwaarde = totaal_aantal_orders > 0 ? (total_omzet / totaal_aantal_orders) : 0
# Top 5 producten op basis van omzet
top_producten = product_verkoop.sort_by { |product, data| -data[:omzet] }.first(5)
# Rapport maken
rows = []
rows << ['Totaal omzet', sprintf('€ %.2f', total_omzet)]
rows << ['Gemiddelde orderwaarde', sprintf('€ %.2f', gemiddelde_orderwaarde)]
rows << :separator
rows << ['Top 5 producten op omzet', '']
top_producten.each_with_index do |(product, data), index|
rows << ["#{index + 1}. #{product}", sprintf('€ %.2f', data[:omzet])]
end
table = Terminal::Table.new :title => "Rapport", :rows => rows
puts table
```
**Wat moet je aanpassen?**
- Zorg dat de CSV-kolomnamen ('order_id', 'product', 'price', 'quantity') overeenkomen met jouw CSV-bestand.
- Installeer de gem 'terminal-table' indien nog niet gedaan: `gem install terminal-table`.
- Plaats het CSV-bestand in dezelfde directory of geef het juiste pad.
Dit script geeft een overzichtelijke rapportage in de terminal. Wil je het rapport exporteren naar een bestand of verder aanpassen? Laat het gerust weten!
provider: deepseek
model: deepseek-chat
Zeker, hier is een overzichtelijke Ruby-oplossing voor je rapportage:
```ruby
require 'csv'
require 'terminal-table'
# Gegevens inlezen
sales_data = CSV.read('sales_data.csv', headers: true, converters: :numeric)
# Totaal omzet berekenen
total_revenue = sales_data.sum { |row| row['bedrag'] }
# Gemiddelde orderwaarde berekenen
average_order_value = total_revenue / sales_data.size
# Top 5 producten identificeren
product_sales = sales_data.group_by { |row| row['product'] }
top_products = product_sales.map do |product, rows|
total_sales = rows.sum { |row| row['bedrag'] }
{ product: product, total_sales: total_sales, quantity: rows.size }
end.sort_by { |data| -data[:total_sales] }.first(5)
# Rapport genereren
puts "VERKOOPRAPPORT"
puts "=" * 50
puts "\nTotaal Omzet: €#{total_revenue.round(2)}"
puts "Gemiddelde Orderwaarde: €#{average_order_value.round(2)}"
puts "\nTop 5 Producten:"
top_products_table = Terminal::Table.new do |t|
t.headings = ['Product', 'Totale Verkoop', 'Aantal Verkocht']
top_products.each do |product|
t.add_row [product[:product], "€#{product[:total_sales].round(2)}", product[:quantity]]
end
end
puts top_products_table
```
**Benodigde gem's:**
```bash
gem install terminal-table
```
**Verwachte CSV-structuur (sales_data.csv):**
```csv
order_id,datum,product,bedrag,klant_id
1001,2024-01-15,Product A,49.99,201
1002,2024-01-15,Product B,29.99,202
```
**Aanbevolen verbeteringen:**
1. Voeg `gem 'terminal-table'` toe aan je Gemfile
2. Zorg dat je CSV de juiste kolomkoppen heeft
3. Voor uitgebreidere rapportage overweeg `gruff` gem voor grafieken
Het rapport wordt netjes weergegeven met een professionele tabelopmaak en duidelijke financiële overzichten.