Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

BASEでデータ処理の幅を広げよう

264 views

Published on

LibreOffice BASEを使ったデータ処理で、知っておきたい事項をまとめました。

Published in: Software
  • Be the first to comment

  • Be the first to like this

BASEでデータ処理の幅を広げよう

  1. 1. ワープロでも表計算でもない 第三のツールを活用しよう Dec 8 OSC2018 Fukuoka LibreOffice BASE で データ処理の幅を広げよう Koutarou Watanabe CC-BY-SA4.0
  2. 2. Agenda   ~アジェンダ~ 講師紹介 LibreOffice BASE って? BASE を起動してみよう! 各オブジェクトを理解しよう データ型を理解しよう(データの型を意識しよう) Access の構成と比べてみる データインポートとエクスポート マクロを使った処理のあれこれ   などなど 
  3. 3. 講師紹介   ~ Lecturer Profiles ~ 渡 浩太郎(邊 Koutarou Watanabe ) 福岡市出身 某団体 2011 年 LibreOffice 導入時の メイン担当&マニュアル作成 + 苦情処理係 (現在はシステム担当ではありません) LibreOffice 日本語チーム( 2018/11 ~) 質問や悩み事等は直接本人まで! 今日もプライベート参加です このプレゼンは渡辺の個人的見解であり、所属団体の見解ではございません   
  4. 4. 本セミナーはこんな内容です 事務職やシステム運用担当者など 非開発職の方々を対象とした ノンプログラマー向けです。 BASE の使い方を細かく説明する、使い方講習会では ありません。 BASE でデータ処理を始める時に押さえておきたい事 項について説明します。 大多数の人が「よくわからない」データベース。 使いこなせば、仕事をラクにできる事 100 倍です。 BASE で新しいデータ処理に触れてみましょう。 処理 SQL 等は自学でお願いします!
  5. 5. 本セミナーの対象バージョン 本セミナーは LibreOffice : Ver 6 . 1 . 3 OS : Windows10 ー 64 ビット で動作確認できた内容についてお話ししています。 他のバージョンや OS では、セミナー内容とは違う場 合がありますのでご了承ください。 ちなみに Ver6.1.3 の BASE ではレポートフッターにページや日付を挿入 しようとすると LibreOffice がクラッシュします!
  6. 6. LibreOffice-BASE って知ってる? 1.LibreOffice-BASE とは?(ざっくり言うと) ・データベース統合開発環境である ・ RDB (リレーショナル DB )がメインである 2.Ms-Office で言うところの? ・ Access に該当(機能分類では) ・ファイル互換性は無いに等しい 3.LibreOffice インストール後スグ使える? ・ BASE を使うには JAVA 環境が必要 Writer - WORD Calc - EXCEL BASE -???? JRE : Java Runtime Environment JDK : Java Development Kit 私の場合 Windows10 JRE10 では動かなかった
  7. 7. LibreOffice-BASE のデータベース? 1.BASE では埋込データベースを選択可能 ・埋込 (Embedded)DataBase(DB) って? ・ HSQLDB と Firebird とは? ・ HyperSQL-DataBase ( Java100 %) ・ Firebird- 旧 Borland の InterBASE が土台 2.BASE で埋込 DB を選ぶなら? ・ Firebird を選択すべき理由 ・ LibreOffice5.4 から Firebird が Ver 3に! 市販されていた DB なので 動作が非常に安定している 安定している・対応 SQL が多い・ ANSI SQL 標準に準拠・ネット上に情報が多い LOVer 4.2から Firebird を選択可能になったが FB2.5 だった
  8. 8. 1.何か分からない BASE の起動画面 ・ Writer や Calc との違いとは? 2.データベースソフト (BASE) とは? 3.代表的なオブジェクトは4つだけ! ・テーブル ・・・ データ保管 ・クエリー ・・・ 仮想表(多様な切り口) ・フォーム ・・・ 画面(インターフェース) ・レポート ・・・ 帳票(多様な見せ方) LibreOffice-BASE を起動してみる データを整理して蓄積し、さまざまな組み合わせで取り出せるソフト 表計算:数値データの集計・分析に使用するソフト ここではビューとかストアドプロシージャは意識しないってことで
  9. 9. BASE の起動画面 何をやればよいのか さっぱりわからない オブジェクト 切り替え
  10. 10. 各 OBJECT の役割を理解しよう 1.テーブル ・データを格納する単位 ・データの論理的な集まり 2.クエリー ・問い合わせと結果( SQL 含む) : 仮想表 3.フォーム ・データの表示方法(一覧表・カード型 etc ) 4.レポート ・見やすい印刷物を設計 / 表示
  11. 11. データ型を理解しよう 1.テーブルに格納されるデータは項目毎に設定され たデータ型に従います ● 日付型の項目には「日付」以外、登録できない。 ● 数値型の項目には「数字」以外、登録できない。 ● データベースではデータを「型」で分類する。 ● しっかりした「型」分類によりデータの整合性を保 持している。 ● データ型はデータインポート時に意識する必要が 出てくる。
  12. 12. BASE ( Firebird )のデータ型を知ろう  ~ 多いと感じますが ~ 分類 データ型名 範囲 文字列 CHAR(m) VARCHAR(m) 半角英数( ASCII )  1 ~ 32767 文字 全角( SJIS_0208 )  1 ~ 16383 文字 CHAR(m) は m 文字の固定長 VARCHAR(m) は最大 m 文字の可変長 整数 SMALLINT INTEGER -32,768 ~ 32,767 -2,147,483,648 ~ 2,147,483,647 長整数 BIGINT 符号付 64 ビット整数 Dialect3/FB1.5 以降で使用可能 実数 FLOAT DOUBLE PRECISION 3.4×10 の -38 乗~ 3.4×10 の 38 乗 有効桁数 7 桁 1.7×10 の -308 乗~ 1.7×10 の 308 乗 有効桁数 15 桁 固定小数点 NUMERIC ( m,n ) DECIMAL ( m,n ) 有効桁数 m = 1 ~ 15 小数点以下の桁数 n=1 ~ 15 ( m >= n ) 最高 m 桁の有効数字を格納 有効桁数 m = 1 ~ 15 小数点以下の桁数 n=1 ~ 15 ( m >= n ) 最低 m 桁の有効数字を格納 日付 DATE TIME TIMESTAMP 西暦 100 年 1 月 1 日~ 32768 年 2 月 29 日までの年月日 00:00:00 ~ 23:59:59 までの時分秒 西暦 100 年 1 月 1 日~ 32768 年 2 月 29 日までの年月日と時分秒 その他 BLOB グラフィック,文字などの大量データに使用 : 可変長 論理型 BOOLEAN 真理値の「真 = true 」と「偽 = false 」
  13. 13. BASE のデータ型を知ろう ~ 普段使うのは赤枠内くらい ~ 分類 データ型名 範囲 文字列 CHAR(m) VARCHAR(m) 半角英数( ASCII )  1 ~ 32767 文字 全角( SJIS_0208 )  1 ~ 16383 文字 CHAR(m) は m 文字の固定長 VARCHAR(m) は最大 m 文字の可変長 整数 SMALLINT INTEGER -32,768 ~ 32,767 -2,147,483,648 ~ 2,147,483,647 長整数 BIGINT 符号付 64 ビット整数 Dialect3/FB1.5 以降で使用可能 実数 FLOAT DOUBLE PRECISION 3.4×10 の -38 乗~ 3.4×10 の 38 乗 有効桁数 7 桁 1.7×10 の -308 乗~ 1.7×10 の 308 乗 有効桁数 15 桁 固定小数点 NUMERIC ( m,n ) DECIMAL ( m,n ) 有効桁数 m = 1 ~ 15 小数点以下の桁数 n=1 ~ 15 ( m >= n ) 最高 m 桁の有効数字を格納 有効桁数 m = 1 ~ 15 小数点以下の桁数 n=1 ~ 15 ( m >= n ) 最低 m 桁の有効数字を格納 日付 DATE TIME TIMESTAMP 西暦 100 年 1 月 1 日~ 32768 年 2 月 29 日までの年月日 00:00:00 ~ 23:59:59 までの時分秒 西暦 100 年 1 月 1 日~ 32768 年 2 月 29 日までの年月日と時分秒 その他 BLOB グラフィック,文字などの大量データに使用 : 可変長 論理型 BOOLEAN 真理値の「真 = true 」と「偽 = false 」
  14. 14. Access の構成と比べてみる システムイメージ Access テーブル (TABLE) フ ォ ー ム Form ク エ リ ー Query レ ポ ー ト Report フ ォ ー ム Form BASE ク エ リ ー Query レ ポ ー ト Report Firebird (TABLE) DataSource Writer Firebird 埋込 Embedded→ Access の方が各オブジェクト間の連携が強力で気軽に利用しやすい反面、実際の DB 開発に近い環境を意識しにくい。その点はBASE に分がある
  15. 15. BASE を使ったデータ処理 1.BASE (データベース)の利点って? ・仮想的にデータを表示できる - クエリー ・仮想だから元データに影響が及ばない ・印刷設定も元データに影響しない - レポート ・処理パターンを保存できる - クエリー / レポート 2.データベースが得意な処理とは? ・データの連結 ・集計(グループ化) ・一定の条件によるデータ抽出
  16. 16. BASE へのデータ移動 ~ データインポート ~ 1.BASE へデータを移すには? ・テーブルにデータを移すには? ・ Calc を中継するパターンが簡単便利 ➢範囲選択+コピー & ペースト(コピペ)で完了 ➢連結用コードは Calc で生成しておこう! 2.データ型を意識しよう ・意識すべきデータ型は3つだけ! ・主キー(プライマリキー)は自動付与で! ※ 自動付与しない場合はデータ登録後でも付与可能 日付? 数値? 文字列?
  17. 17. BASE Calc で事前に型指定してしまう! ●Calc のセルの書式設定でデータ型を決める ・日付型で保存したいとき ➢Calc : 1999-12-31 形式で指定しておく ➢BASE :取込時に日付 DATE 型で指定 ・数値型で保存したいとき ➢Calc :数で指定しておく ➢BASE :取込時に数値 BIGINT/INT 型で指定 ・文字列型で保存したいとき   ➢Calc :テキストで指定しておく ➢BASE :特に指定しなくても OK データ インポート作業
  18. 18. BASE 貼り付けテーブルがある?ない? ●貼り付け先テーブルがない場合 ・テーブル欄の空きスペースに貼り付け ➢テーブル作成ウィザードが起動する ➢画面遷移に従って処理をすすめると OK ●既存のテーブルに貼り付ける場合 ・貼り付けるテーブル名を選択→貼り付け ・オートナンバー型項目があるテーブルへ  貼り付ける場合の注意点 データ インポート作業 ※ オートナンバー型はテーブル作成時から指定しておく必要あり ※ オートナンバー型項目の送りデータ側のチェックを外す
  19. 19. インポート画面 オートナンバー型が ある既存テーブルへ のインポート ソース側の チェックを外す
  20. 20. BASE 連結コードは Calc で生成しておこう ●2 つのデータを連結する連結コードは Calc で項目 連結して作成しよう データ インポート作業 •データ照合には両データ共通の連結コードが必須。 •実際は、ほぼ連結用のコードを作成する必要がある。 •名簿であれば、「カナ氏名」と「生年月日」を連結しコー ドを生成する方法がある。 •セル式に =trim( として余計なスペースを削除すれ ば、かなり識別度の高いコードを生成できる。 •データ照合は「目」チェックが重要ですが、検証とし て、連結コードによる「機械照合」もあれば、事務負担 が軽減されるのではないかと思う。
  21. 21. BASE 連結コードとリレーション ●2 つのデータを連結する連結コード同士をリレー ション(関係付け)する(クエリー作成時で OK ) ● 2つのデータにある識別用コードをリレーションする ● 連結コード同士の連結でデータ照合が可能となる ● リレーションには4つの種類がある ➔ 内部結合・・・ 両方に共通存在するデータ ➔ 右結合 ・・・ 右側の全データ+左側で合致するデータ ➔ 左結合 ・・・ 左側の全データ+右側で合致するデータ ➔ クロス結合・・・ 全データを全ての組み合わせで結合 データ処理の場合、処理の内容に応じてリレーションを使い分ける必要があるの で、実際にクエリーを作成する段階でリレーションを張れば良い 不一致データを探す場合は、右結合か左結合を利用する
  22. 22. リレーション テーブル間の連結 コード同士を接続 ソース側の 識別用 CD から テーブル側へ ドラッグ この例はデータ A にあって データ B には無い不一致 データを抽出しています リレーション後 右クリック編集で 結合方法を選定 不一致検索は赤枠のようにデータ B のデータを検索するのがポイント
  23. 23. BASE でのデータ処理事例 ●具体的なデータ処理例 ~クエリー&レポート~ ・ 2 つのデータを照合する ①データ A にもデータ B にも存在する(内部結合) ②データ A にあってデータ B には無い(左結合) ③データ B にあってデータ A には無い(右結合) ・グループ単位で集計する(複数指定可) ・指定範囲内にあるデータを抽出する ・処理と結果データを保存し出力可能とする ・見映え良い印刷物として出力する
  24. 24. SQL (クエリー)の実行ボタンは2つある ●クエリーの実行とは? ・ SQL は SELECT 文だけに対応 ・ LibreOffice-BASE が処理を実行する(らしい) SELECT 文・ SQL ステートメントのシンタックスエラー・システム テーブル (RDB$) へのアプローチ ●SQL コマンドを直接実行とは? ・ほとんどの SQL を実行可能 ・利用している DataBase が処理を実行  (動作はデータベースに依存) Select 文以外の SQL を流す場合は「SQL コマンドを直接実行」を有効にする必要 がある、複雑なSelect 文でエラーが出る場合、直接実行で解決する時もある SQL コマンドを直接実行ボタンを有効にした後、クエリーの実行ボタンを押します
  25. 25. BASE からデータ出力 ~ データエクスポート ~ ●データ出力時の留意点 ・コピー&ペースト(コピペ)だと文字化けします ・文字化けしない方法 ①Calc の新規シートを開きます ②BASE のオブジェクト一覧を開きます ③出力したいオブジェクトを選択 ④そのまま①の Calc 画面上へ Drag&Drop ⑤Calc シート上にデータ展開される BUG ですね
  26. 26. 文字化け テーブル名を選択しコピー シートに貼り付け(コピペ) ドラッグ&ドロップ コピペを行うと文字化けする、ドラッグ& ドロップだと文字化けしない
  27. 27. BASE でマクロを使う ●OpenBasic がメイン言語 ・ Calc データのインポート / エクスポート ・テキストファイルのインポート / エクスポート ・出力するデータの文字コード指定 ・フォームやレポートの動作制御(コントロール) ・フォームの入力値を条件に持つクエリー実行    などを自動化できます ●クエリー上で Function 関数が使えない Access との大きな違い!ユーザー関数を気軽に利用できない BASE マクロにはインポート・エクスポートコマンドはないが、処理マクロで実装 可能、Access のフォーム的な運用の実装もマクロで実現できます。 Access のようにクエリーにフォームの値を直接パラメーターとして読ませることはでき ないので、マクロでSQL を直接書き換え、その後クエリー実行という流れになる。
  28. 28. There is no time like the present! 今が最適時です! さあ!これで  あなたも BASE 使い! ~データベース?  使ってみたことあるよ と言おう~
  29. 29. 今日の講演を聞いたから きっと大丈夫!! There is no time like the present! SlideShare にも色々上げてるから見てね! CALC の DB 機能?、あんなの飾りです BASE を知らない人にはそれがわからんのですよ
  30. 30. ご清聴ありがとうございました CC-BY-SA4.0

×