初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2022-04-13 11:31:35

khajime
Member

グラフ描画のためのデータ集計について

filemaker初心者です。
どなたかご教示願います。
複数会社の財務分析のため、特定勘定科目ごとの年度推移をグラフ化したいと考えております。
早速ですが、簡略化して説明させていただきます。

○「財務データ」テーブル
フィールド:年度、会社名、人件費、光熱費、減価償却費

グラフは費目ごとに、複数折れ線グラフを作成したいと考えています。
このまま、X軸に年度、Y軸に例えば人件費を指定しても、正しくグラフは描けません。
そこで、「集計用_財務データ」テーブルを作成し、グラフ描画しようとする科目を集計してはと考えました。

○「集計用_財務データ」
フィールド:年度、会社A_人件費、会社B_人件費、会社C_人件費、会社A_光熱費、会社B_人件費、会社C_人件費・・・

この「集計用_財務データ」の作成方法がわからないのですが、
そもそもほかによい方法があればご教示いただければと存じます。
よろしくお願いいたします。

Offline

#2 2022-04-13 18:12:40

himadanee
Guest

Re: グラフ描画のためのデータ集計について

対象レコードと関係ないグラフなので、SQLを使うのが簡単かな。
会社と年度ごとに全データがそろっているとして、会社Aの人件費は
ExecuteSQL ( "
SELECT \"年度\", \"人件費\"
FROM \"財務データ\"
WHERE \"会社名\" = ?
ORDER BY 1
" ; "" ; "" ; "会社A" )

#3 2022-04-14 11:18:04

khajime
Member

Re: グラフ描画のためのデータ集計について

ご教示いただき、ありがとうございます。
ExecuteSQL関数は使用したことがありませんでした。

早速、参考にさせていただき、本件のために設定していたリレーションを削除し、次のとおり計算式を設定しました。
ただ、データを引っ張ってきません。
改めて現在のテーブル作成状況は次のとおりです。

1.「財務データ」テーブル
   フィールド:年度、会社名、人件費、光熱費、減価償却費・・・
2.「集計用_財務データ」テーブル
   フィールド:年度、会社A_人件費、会社B_人件費、会社C_人件費、会社A_光熱費、会社B_人件費、会社C_人件費・・・

○設定した計算式(※少し変更しました。ご容赦ください)
   ExecuteSQL ( "SELECT (\"人件費\") FROM \"財務データ\" WHERE \"年度\"=? and \"会社名\"=?" ; "" ; "" ; 年度; "会社A" )
   ※引数とした年度と会社名ですが、年度はフィールド名を、会社名は直接指定しました。
設定フィールドは、「集計用_財務データ」テーブルの「会社A_人件費」フィールドです。


お手数をおかけして申し訳ありませんが、今一度ご教示願います。
よろしくお願いいたします。

Last edited by khajime (2022-04-14 11:24:48)

Offline

#4 2022-04-14 12:51:20

himadanee
Guest

Re: グラフ描画のためのデータ集計について

SQLを使うのは、フィールドでなくグラフのデータの計算式に指定します。
なので、1系列(折れ線1本)分のデータが一括して得られるように、引数は会社名だけです。

#5 2022-04-14 16:54:57

khajime
Member

Re: グラフ描画のためのデータ集計について

早速ご返信いただきありがとうございます。
たびたび申し訳ありません。追加の質問をお願いいたします。

ExecuteSQLの結果を各フィールドに格納するのは、全く別の方法になるということでしょうか。
データ構造をよく理解していませんでした。
できれば、結果をフィールドに格納したいのですが、まずはご教示いただいたグラフに直接設定する方法を
実現できればと思います。

グラフのデータ欄に計算式を設定するとのことですが、そもそも根拠とするテーブルは「財務データ」でよく、
私がご説明しました「集計用_財務データ」テーブルは不要ということでよろしいでしょうか。

1.「財務データ」テーブルの新規レイアウトを作成

2.グラフツールにて、Y軸のデータに次の計算式を設定
  ExecuteSQL ( "SELECT \"年度\", \"人件費\" FROM \"財務データ\" WHERE \"会社名\" = ? ORDER BY 1" ; "" ; "" ; "会社A" )
  ※この際、X軸データはどのように設定?

(1グラフに複数会社の年次推移を描くため、さらに)
3.Y軸系列を追加し、上記計算式の「会社A」を「会社B」に変更して、追加した系列データに設定する。

色々試してみましたがうまくいかず改めてお願いいたします。

Offline

#6 2022-04-14 17:14:25

チポ
Member

Re: グラフ描画のためのデータ集計について

財務データテーブルは、
1年度 & 1会社名
ごとに1レコードですよね?

グラフは、一つの会社の年度ごとのデータですよね?

ならば、会社名で自己リレーションして、
その関連レコードをグラフにすればいいのでは。


> 集計用_財務データテーブル
このテーブルのありようが理解できません。
また、
1レコードに、各会社ごとのデータがあるのは間違いですよ。

Offline

#7 2022-04-15 09:22:30

himadanee
Guest

Re: グラフ描画のためのデータ集計について

ああ、こっちでも間違えてた。すいません。
Y軸のデータなので人件費だけを取得しないといけないが、年度順に入力されてるとは限らないと思って年度でソートするのにSELECTにまで追加したのでグラフのデータにそのまま使えなくなってしまってました。

ExecuteSQL ( "
SELECT \"人件費\"
FROM \"財務データ\"
WHERE \"会社名\" = ?
ORDER BY \"年度\"
" ; "" ; "" ; "会社A" )
ですね。X軸は
ExecuteSQL ( "
SELECT DISTINCT \"年度\"
FROM \"財務データ\"
ORDER BY 1
" ; "" ; "" )
かな。

一部のデータ(年度)だけグラフにするときはWHEREに条件を追加します。

#8 2022-04-15 12:40:08

khajime
Member

Re: グラフ描画のためのデータ集計について

ありがとうございます。

> 集計用_財務データテーブル
を作成したのは、あくまでもグラフを作成するためでした。DBとしては不適切でした。

グラフでのデータ指定は試してみました。
折れ線を描いていますが、X軸に(2018 2019 2020)のセットがレコード数分表示されてしまいます。
グラフの表示もできません。
一度簡単なデータで試してみたいと思います。

よろしくお願いいたします。
重ねてお礼まで

Offline

#9 2022-04-15 14:04:52

Shin
Member

Re: グラフ描画のためのデータ集計について

こんなグラフが作りたい?
https://www.dropbox.com/s/rbxij8f9nvmpu … 2.zip?dl=0

Last edited by Shin (2022-04-16 11:25:55)

Offline

#10 2022-04-15 14:36:40

khajime
Member

Re: グラフ描画のためのデータ集計について

作りたいグラフは、複数の会社の、例えば人件費の年度推移を比較するためのものです。

財務データは、示していただているとおりのものです。

Offline

#11 2022-04-15 19:35:51

himadanee
Guest

Re: グラフ描画のためのデータ集計について

レコード数だけデータポイントができてしまうのは
「グラフインスペクタで、[データソース] をクリックして [現在のレコード (区切りデータ)] を選択します。」
をやってないのでは。
https://help.claris.com/ja/pro-help/con … -data.html

#12 2022-04-16 11:29:59

Shin
Member

Re: グラフ描画のためのデータ集計について

1科目に対して、年度ごとに、会社A、会社B、会社Cのそれぞれの集計値を持たせたデータ列が必要になります。

データを直接参照するやり方では、元のデータの持たせ方を変えると簡単です。(これの方が汎用性が高いので、おすすめです)
https://www.dropbox.com/s/rbxij8f9nvmpu … 2.zip?dl=0

今の形のままでグラフを表示させるには、SQLでそれを作る、という方法が必要でしょう。(himadaneeさんは、これをしようとされています)
または、クロス集計を行うと、できそうです。
https://www.dropbox.com/s/s8rlhajhk9on1 … 2.zip?dl=0

Last edited by Shin (2022-04-16 19:17:30)

Offline

#13 2022-04-18 13:58:18

khajime
Member

Re: グラフ描画のためのデータ集計について

himadanee様、Shin様、ご教示いただきありがとうございます。
しばらく不在にしており返信が大変遅くなりました。

データの持たせ方を変えて対応する方法もあるかと思いますが、
himadanee様からご提示いただいたSQLによる方法で作成してみました。

1.スクリプトを設定し、財務データテーブルから、必要な科目のデータを取得し、
グローバル変数に格納します。
  変数名:$$人件費
  計算式:ExecuteSQL("SELECT \"年度\",\"人件費支\"  FROM \"財務データ\"
        WHERE \"会社名\"=? ORDER BY 1 ";"|";"¶";"会社A")

2.集計用財務データテーブルのフィールドにグローバル変数のデータを取り込みます。
  GetValue(Substitute(GetValue($$人件費;年度-2016);"|";"¶");2)
  ※「年度-2016」は取得する行数の位置を指定しています。

現在グラフは描画できていますが、今後データが増えたときに時間がかからないのか
少し心配なところがあります。特段リレーション設定なしにできるので簡単ではありました。
データも持たせ方を工夫しリレーションによる簡素な方法での対応を考えたいと思います。
色々とご教示いただきありがとうございました。

Last edited by khajime (2022-04-18 14:03:03)

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.009 seconds, 9 queries executed - Memory usage: 593.24 KiB (Peak: 610.15 KiB) ]