21. 21
横軸3段重ねへの対応
それぞれ縦に変換して、後で列で結合
A D E F G H I J K L M N O
DPC6桁 010010 010020 010030
件数/日数 件数 在院日数 件数 在院日数 件数 在院日数
施設名 手術有 手術無 手術有 手術無 手術有 手術無 手術有 手術無 手術有 手術無 手術有 手術無
〇〇病院 10 11 1 5 0 3 4 2 5 0 8 3
△△病院 15 3 6 8 1 5 3 1 9 3 0 0
□□病院 8 4 3 4 12 4 9 2 8 2 3 7
列 DPC6桁
D 010010
E 010010
F 010010
G 010010
H 010010
I 010010
J 010010
K 010010
L 010010
M 010010
N 010010
O 010010
列 件数/日数
D 件数
E 件数
F 在院日数
G 在院日数
H 件数
I 件数
J 在院日数
K 在院日数
L 件数
M 件数
N 在院日数
O 在院日数
列 手術有無
D 手術有
E 手術無
F 手術有
G 手術無
H 手術有
I 手術無
J 手術有
K 手術無
L 手術有
M 手術無
N 手術有
O 手術無
1行名(Temp3) 3行名(Temp13) 4行名(Temp22)
Join Join
※2行目の病名は使いません。
列 施設名 値
D 〇〇病院 10
E 〇〇病院 11
F 〇〇病院 1
G 〇〇病院 5
H 〇〇病院 0
I 〇〇病院 3
J 〇〇病院 4
K 〇〇病院 2
L 〇〇病院 5
M 〇〇病院 0
N 〇〇病院 8
O 〇〇病院 3
D △△病院 :
E : :
5行名以降(Temp32)
Join
1行目
3行目
4行目
5行目
以降
復習
27. 27
18の疾患別手術別集計シートを処理する
For Each ~ Next 構文
For Each vFileName in Filelist ('lib://参考資料2/8.疾患別手術別集計_MDC*.xlsx')
変数: 処理を繰り返す都度、リストの値が順番に入る
リスト: 指定フォルダにあるファイルのコンマ区切りのリスト
「 2/8.疾患別手術別集計_MDC」で始まる名前のすべての
Exceファイル
Next vFileName
クォーテーションで囲む
Temp:
LOAD
*
From [$(vFileName)] (ooxml, no labels, table is [$(MDC*)]);
最初のExcelシートからの読み込みを変数に格納されたファイル名からに変更する。
28. 28
For Each ~ Next を追加時の考慮
前回までのスクリプトにFor EachとNextだけつけて実行すると、Temp5が18個できます。
項目名変更、件数・在院日数を横並べ Temp4
不要データを除いてロード Temp5
原因
Temp4からTemp5をロードする時に、
これらは同じ項目のテーブルだが、自動結合しないように
NoConcatenateを使用している。
それぞれのExcelファイルから作成されるTemp5は結合
してほしいが、NoConcatenateのため結合せず別テー
ブルとなってしまう。
29. 29
For Each ~ Next を追加時の考慮
対策例:
Temp5のロード時にNoConcatenateの使用をやめて、18のTemp5が結合されるようにする。
Temp5がTemp4に結合しないように、Temp4とTemp5は異なる項目のテーブルとしておく。
Temp4で実施していた項目名Aの施設IDへの変換をやめて、Temp5ロード時に項目名
変換を行う。
30. 30
データ加工のスクリプト1
For Each vFileName in FileList('lib://参考資料2/8.疾患別手術別集計_MDC*.xlsx’)
NullAsValue *;
Set NullValue = 'NULL';
Temp:
LOAD
*
From [$(vFileName)] (ooxml, no labels, table is [$(MDC*)]);
Drop Fields B,C;
Temp3への結合まで前回と同様
← Forを追加
← 変数からのロードに変更
31. 31
データ加工のスクリプト2
Temp4:
Load
A,
DPC6桁,
手術有無等,
数値 as 件数
Resident Temp3
Where 件数_日数='件数';
Left join(Temp4) Load
A,
DPC6桁,
手術有無等,
数値 as 在院日数
Resident Temp3
Where 件数_日数='在院日数';
Drop tables Temp3;
Temp5:
Load
A AS 施設ID,
DPC6桁,
手術有無等,
件数,
在院日数
Resident Temp4
Where 件数 > 0 or 在院日数 > 0;
Drop tables Temp4;
Next vFileName;
← 項目変換をやめてAのまま
← 項目変換をやめてAのまま
← NoConcatenateをやめる
← 項目変換
← Nextを追加