Ein paar ausgewählte Abfragen, welche ich für die Objektiv- und Brennweitenstatistik verwendet habe. Hilfreich ist auch zu wissen, wie man den Lightroom Katalog per SQLite anspricht.

Für diese Beispiele sind folgende Tabellen interessant:

  • AgHarvestedExifMetadata … enthält die EXIF Informationen der im Katalog verwalteten Fotos. Beispielsweise Aufnahmedatum, Blende, ISO.
  • AgInternedExifCameraModel … enthält die Kameranamen.
  • AgInternedExifLens … enthält die Objektivnamen.

Über eine Verknüpfung der Attribute cameraModelRef und lensRef in der Tabelle AgHarvestedExifMetadata und dem Attribut id_local in den Tabellen AgInternedExifCameraModel und AgInternedExifLens kommt man an die zugehörigen Kamera- und Objektivnamen.

Um die Ergebnismengen der folgenden Abragen gleich im CSV Format zu erhalten, reicht unter sqlite die Angabe von .mode csv, welche die Werte gleich kommasepariert ausgibt. Praktisch um diese für eine schnelle grafische Auswertung bspw. in LibreOffice in ein Tabellenblatt zu importieren.

Querries

Alle Kameras mit ihrer Fotoanzahl:

SELECT AgInternedExifCameraModel.value, count(*)
FROM AgHarvestedExifMetadata
JOIN AgInternedExifCameraModel ON cameraModelRef = AgInternedExifCameraModel.id_local
GROUP BY cameraModelRef;

Alle Objektive mit ihrer Fotoanzahl, wobei ein LEFT JOIN nötig ist, um auch Fotos ohne Objektivangaben zu erfassen (bspw. alte manuelle):

SELECT cast(dateYear as integer), cast(dateMonth as integer), AgInternedExifLens.value, count(*)
FROM AgHarvestedExifMetadata
LEFT JOIN AgInternedExifLens ON lensRef = AgInternedExifLens.id_local
GROUP BY dateYear, dateMonth, cameraModelRef, lensRef;

Alle Objektive mit ihrer Fotoanzahl mit der zusätzlichen Einschränkung auf Kameras von Pentax („pentax%“ = „Pentax K200d, Pentax K-5, Pentax…“):

SELECT cast(dateYear as integer), cast(dateMonth as integer), AgInternedExifLens.value, count(*)
FROM AgHarvestedExifMetadata
JOIN AgInternedExifCameraModel ON cameraModelRef = AgInternedExifCameraModel.id_local AND lower(AgInternedExifCameraModel.value) LIKE "pentax%"
LEFT JOIN AgInternedExifLens ON lensRef = AgInternedExifLens.id_local
GROUP BY dateYear, dateMonth, cameraModelRef, lensRef;

Alle Brennweiten auf ganze Zahlen gecastet mit ihrer Fotoanzahl, wobei eine Einschränkung auf Kameras mit ähnlichen Cropfaktor noch sinnvoll wäre:

SELECT cast(focalLength as integer), count(*)
FROM AgHarvestedExifMetadata
GROUP BY cast(focalLength as integer);

Ich hoffe dies hilft dem ein oder anderen. Hätte ich mehr Lust und Zeit, könnte man da sicher eine schöne Auswertungssoftware oder ein Plugin für Lightroom schreiben. :)