
移動通信のコスト管理システムの作成に関する技術的な詳細についてお話したいと思います。その概念は以前の投稿で説明されました。
例として、MTSのいずれかの月のアカウントを検討し、簡単なOLAPプロジェクトを作成します。
回答から判断すると、このトピックは非常に関連性が高いので、興味がある人は猫の下でお願いします。
アカウントファイルから取得した費用に関する情報、または各番号の概要部分から取得した情報:

抽出したファイルから:
- 電話番号
- ICCID-ID SIMカード
- 請求期間
- 金額を伴う通信サービスに関する要約データ
また、抽出したアカウントの「ヘッダー」から:
- 個人口座
- プロバイダー名
各地域および各プロバイダーではアカウントの形式が異なり、ユニバーサルソフトウェアは存在できないため、パーサーの説明をスキップしてこのデータをすべて抽出します。
次のようないくつかの機能に注意を払うことができます。
- パーサーが正しいことを確認するには、各タイプの合計金額と費用の種類ごとのコンポーネントの金額の比較を作成する必要があります
- ICCIDは、各シムの唯一の一意のIDです。 音声番号は時間とともに変化する可能性がありますが、ICCIDは一定です。 関係を構築する最も正しい方法は、このパラメーターを使用することです
- 個人アカウント-可能であれば、システムのさまざまなコンポーネントで使用されるSIMカードをさまざまなl / s(従業員、m2mデバイス、サーバーの通信など)に「ハングアップ」するので、費用を追跡するのが最も便利です
上記のコンポーネントに従って、データをsqlテーブルにインポートします。
生データのデータは次のようになります。

トラフィックのタイプごとにすべての一意の値を選択すると、数百行のリストが表示されますが、これはアナリストの快適な仕事に貢献することはできません。
以下は、データのほんの一部です。 たとえば、各ネットワークの内部ネットワークローミングが個別に示されていることがわかります。

通信のタイプに関するデータを標準の10〜15の値にする必要があります。
これは、次のように、1つの値のすべての可能なバリアントを分析して、caseステートメントを介して実行できます。
CASE WHEN rom.SERVICEDESCRIPTION LIKE '%%sms%' THEN ' ' WHEN (rom.SERVICEDESCRIPTION LIKE '%sms%' AND rom.SERVICEDESCRIPTION NOT LIKE '%%') THEN '' WHEN (((rom.SERVICEDESCRIPTION LIKE '%gprs%' OR rom.SERVICEDESCRIPTION LIKE '% %') and rom.SERVICEDESCRIPTION not LIKE '%hsdpa%') AND rom.SERVICEDESCRIPTION NOT LIKE '%%') THEN 'gprs' WHEN ((rom.SERVICEDESCRIPTION LIKE '%%gprs%' OR rom.SERVICEDESCRIPTION LIKE '%% %') and rom.SERVICEDESCRIPTION not LIKE '%%hsdpa%') THEN ' gprs' WHEN ((rom.SERVICEDESCRIPTION LIKE '%hsdpa%') AND rom.SERVICEDESCRIPTION NOT LIKE '%%') THEN 'hsdpa' WHEN (rom.SERVICEDESCRIPTION LIKE '%%hsdpa%') THEN ' hsdpa' WHEN ((rom.SERVICEDESCRIPTION LIKE '% %' OR rom.SERVICEDESCRIPTION LIKE '%%%' OR rom.SERVICEDESCRIPTION LIKE '%. %' OR rom.SERVICEDESCRIPTION LIKE '% , , WAP %') AND rom.SERVICEDESCRIPTION NOT LIKE '%%') THEN ' ' WHEN (rom.SERVICEDESCRIPTION LIKE '%% %' OR rom.SERVICEDESCRIPTION LIKE '%%%%' OR rom.SERVICEDESCRIPTION LIKE '%%. %' OR rom.SERVICEDESCRIPTION LIKE '% .%') THEN ' ' WHEN rom.SERVICEDESCRIPTION LIKE '%% %' THEN ' ' WHEN ((rom.SERVICEDESCRIPTION LIKE '% %') AND rom.SERVICEDESCRIPTION NOT LIKE '%%') THEN ' ' WHEN rom.SERVICEDESCRIPTION LIKE '% %' THEN ' ' WHEN rom.SERVICEDESCRIPTION LIKE '%%' THEN '' ELSE '' END
その結果、標準値を取得します。

次に、トラフィック量によってテキスト値を数値に変換する必要があります
同じcaseステートメントを使用する
CASE WHEN rom.serviceqtydescription LIKE '0.00 ' THEN '0' WHEN rom.serviceqtydescription LIKE '%.%.%' THEN '1' WHEN rom.serviceqtydescription LIKE ' ' OR rom.serviceqtydescription LIKE '' THEN '0' WHEN rom.serviceqtydescription LIKE '%' THEN CAST(replace(rom.serviceqtydescription, ' ', '') AS numeric(20, 2)) WHEN rom.serviceqtydescription LIKE '%.' THEN CAST(replace(rom.serviceqtydescription, ' .', '') AS numeric(20, 2)) WHEN rom.serviceqtydescription LIKE '%. 0 .' THEN CAST(replace(rom.serviceqtydescription, ' . 0 .', '') AS numeric(20, 2)) WHEN rom.serviceqtydescription LIKE '%' THEN CAST(replace(rom.serviceqtydescription, ' ', '') AS numeric(20, 2)) / 60 WHEN rom.serviceqtydescription LIKE '%' THEN CAST(replace(rom.serviceqtydescription, ' ', '') AS numeric(20, 2)) WHEN rom.serviceqtydescription LIKE '%' THEN CAST(replace(replace(rom.serviceqtydescription, ' ', ''),',','.') AS numeric(20, 2)) / 1024 WHEN (rom.serviceqtydescription LIKE '%.% ' AND rom.serviceqtydescription NOT LIKE '0.0 ') THEN CAST(replace(rom.serviceqtydescription, ' ', '') AS numeric(20, 2)) * 1024 WHEN rom.serviceqtydescription LIKE '%' THEN CAST(replace(rom.serviceqtydescription, ' ', '') AS numeric(20, 2)) when rom.serviceqtydescription = ' ' then 0 ELSE CAST(replace(rom.serviceqtydescription, ' ', '') AS numeric(20, 2)) END AS
取得:SMSの断片、音声の分、キロバイト単位のデータ転送
要約表は次のようになります

これで、金額とトラフィックのデータは算術演算の影響を受けやすくなりました。
このフォームでは、データはすでに、管理スタジオウィンドウから、またはデータベースを外部データソースとして接続しているExcelインターフェイスから分析するのに非常に適しています。
ご理解のとおり、将来のOLAPキューバのファクトテーブルを作成しました。
単純なキューブを作成するには、ファクトテーブルからディメンションを選択する必要があります。
- 期間
- 個人口座
- 電話
- プロバイダー
- トラフィックの種類
データを個別のテーブル(int形式の個別の主キーを持つディレクトリ)に表示し、ファクトテーブルの値をディレクトリの対応する値に置き換えることが非常に望ましいです。 ディレクトリ内の値は一意である必要があります。
上記のすべてがタイムディレクトリに適用されるわけではなく、サーバー上で個別に生成されます。
OLAPプロジェクトの作成を開始します
BIDSは新しいデータマイニングプロジェクトを作成する必要があります
DWHという名前の新しいデータソースを作成する

テーブルを追加するデータソースビューを作成する

この例では、プロバイダーテーブルはありませんが、同じ方法で追加されます。 また、int形式フィールドのキーを使用して推奨事項に従わなかった-これは機能しますが、大量のデータを使用するとパフォーマンスに影響します。
時間測定の作成については説明しませんが、ネットワークにはこれに関する十分な情報があります。
次のステップはキューブの作成です。このために作成ウィザードを起動します
最初の画面で、選択-既存のテーブルを使用
次に、測定テーブルを選択して、ウィザードに従う必要があります




キューブを作成すると、ディメンションが自動的に追加されます
キューブは次の形式を取ります。

また、時間ディメンションをダブルクリックし、必要な時間コンポーネントを属性セクションにドラッグする必要があります。

また、必要に応じて、階層を作成します

サーバーへのキューブのデプロイを開始できます。そのために、プロジェクトをクリックして処理を開始します。
処理後、Excelを介してキューブに接続できます。これは次のように行われます。
データ-他のソースから-分析サービスから、ウィザードでキューブを展開したサーバーの名前を入力します。
説明したソリューションは完全ではなく、SQLおよびBIの分野の専門家が多くの欠点を指摘しますが、この説明により、ビジネスインテリジェンスシステムを構築するのが初めての人でもこの作業を開始できると思います。