Excel-dax-working-with-text-and-dates
Excel DAX-テキストと日付の操作
DAXは、テキストの操作、日付と時刻の値の抽出と構成、または条件に基づいた値の作成を含むシナリオで使用できます。 あなたはDAXで次のことができます-
- 連結によってテーブルにキー列を作成します。
- テキスト日付から抽出された日付部分に基づいて日付を作成します。
- カスタム日付形式を定義します。
- 数式を使用してデータ型を変更します。
- 実数を整数に変換します。
- 実数、整数、または日付を文字列に変換します。
- 文字列を実数または日付に変換します。
連結によるキー列の作成
PowerPivotのデータモデルでは、単一のキー列のみが許可されます。 外部データソースにあるかもしれない複合キーはサポートしていません。 したがって、データソースのテーブルに複合キーが存在する場合、それらをデータモデルのテーブルの単一のキー列に結合する必要があります。
DAX関数CONCATENATEを使用して、2つの列をデータモデルのテーブルの1つの列に結合できます。 DAX関数CONCATENATEは、2つのテキスト文字列を1つのテキスト文字列に結合します。 結合されるアイテムは、テキスト、数値、またはテキストとして表されるブール値、またはそれらのアイテムの組み合わせです。 列に適切な値が含まれている場合は、列参照を使用することもできます。
DAX CONCATENATE関数は、2つの引数のみを受け入れます。 引数のいずれかがテキストデータ型でない場合、テキストに変換されます。 DAX CONCATENATE関数は、連結された文字列を返します。
テキスト日付から抽出された日付部分に基づく日付
Power Pivotのデータモデルは、日付と時刻の値のデータ型datetimeをサポートします。 日付や時刻の値で機能するDAX関数では、引数にdatetimeデータ型が必要です。
データソースに異なる形式の日付が含まれている場合、最初にDAX数式を使用して日付部分を抽出し、それらの部分を組み合わせて有効なDAX日時データ型を構成する必要があります。
次のDAX関数を使用して、日付を抽出および構成できます-
カスタム日付形式の定義
データソースの日付が標準形式で表されていないとします。 カスタムの日付形式を定義して、値が正しく処理されるようにすることができます。 DAX FORMAT関数を使用すると、指定した形式に従って値をテキストに変換できます。
FORMAT関数は、format_stringで定義された形式の値を含む文字列を返します。
事前定義された日付と時刻の形式を使用するか、FORMAT関数の引数format_stringにユーザー定義の日付と時刻の形式を作成できます。
以下は、事前定義された日付と時刻の形式名です。 これらの事前定義された文字列以外の文字列を使用する場合、カスタムの日付と時刻の形式として解釈されます。
S. No. | Format_String & Description |
---|---|
1 |
"General Date" 日付や時刻を表示します。 たとえば、2/10/2015 10:10:32 AM |
2 |
"Long Date" or "Medium Date" 長い日付形式に従って日付を表示します。 たとえば、2016年3月7日水曜日 |
3 |
"Short Date" 短い日付形式を使用して日付を表示します。 たとえば、2016年2月3日 |
4 |
"Long Time" 長い時間形式を使用して時間を表示します。 通常、時間、分、秒が含まれます。 たとえば、10:10:32 AM |
5 |
"Medium Time" 12時間形式で時刻を表示します。 たとえば、09:30 PM |
6 |
"Short Time" 24時間形式で時刻を表示します。 たとえば、14:15 |
または、次の表の文字を使用して、ユーザー定義の日付/時刻形式を作成できます。
S. No. | Character & Description |
---|---|
1 |
: 時間区切り。 時間区切り。 時間値がフォーマットされるときに、時間、分、および秒を区切ります。 |
2 |
/ 日付区切り記号。 日付の値がフォーマットされる日、月、年を区切ります。 |
3 |
% 後続の文字に関係なく、次の文字を1文字形式として読み取る必要があることを示すために使用されます。 また、1文字形式がユーザー定義形式として読み取られることを示すためにも使用されます。 |
以下は、さまざまなキャラクターの詳細です。
- *%d *-先行ゼロなしで数値として日を表示します(例: 5).
- *%dd *-先行ゼロ付きの数値として日を表示します(例: 05).
- *%ddd *-曜日を略語で表示します(例: 太陽)。
- *%dddd *-曜日をフルネームで表示します(例: 日曜日)。
- *%M *-月を先行ゼロなしの数値として表示します(例: 1月は1)として表されます。
- *%MM *-月を先行ゼロ付きの数値として表示します(例: 1月は01)として表されます。
- *%MMM *-月を略語として表示します(例: 1月は1月として表されます)。
- *%MMMM *-完全な月名として月を表示します(例: 1月)。
- *%gg *-期間/時代の文字列を表示します(例: 広告。)。
- %h *-12時間制を使用して、先行ゼロなしで数値として時間を表示します(例: 1:15:15 PM)。 これがユーザー定義の数値形式で唯一の文字である場合は、%h *を使用します。
- *%hh *-12時間制を使用して、先頭にゼロを付けた数字として時間を表示します(例: 01:15:15 PM)。
- *%H *-24時間制を使用して、先行ゼロなしで数値として時間を表示します(例: 13:15:15、1:15:15)。 これがユーザー定義の数値形式で唯一の文字である場合は、%Hを使用します。
- *%HH *-24時間制を使用して、先頭にゼロを付けた数値として時間を表示します(例: 13:15:15、1:15:15)。
- *%m *-先行ゼロなしで数値として分を表示します(例: 2:1:15)。 これがユーザー定義の数値形式で唯一の文字である場合は、%mを使用します。
- *%mm *-分を先行ゼロ付きの数値として表示します(例: 2:01:15)。
- *%s *-先行ゼロなしで数値として秒を表示します(例: 2:15:5)。 これがユーザー定義の数値形式で唯一の文字である場合は、%sを使用します。
- *%ss *-秒を先行ゼロ付きの数値として表示します(例: 2:15:05)。
- %f *-秒の小数部を表示します。 例えば *ff は100分の1秒を表示しますが、 ffff は1万分の1秒を表示します。 ユーザー定義形式で最大7つの f シンボルを使用できます。 これがユーザー定義の数値形式で唯一の文字である場合は、*%f *を使用します。
- *%t *-12時間制を使用し、正午までの任意の時間に大文字のAを表示します。正午から午後11時59分までの任意の時間に大文字のPを表示します。 これがユーザー定義の数値形式で唯一の文字である場合は、%tを使用します。
- *%tt *-12時間制を使用するロケールの場合、正午までの任意の時刻を大文字のAMで表示しますは、正午から午後11時59分までの任意の時間で大文字のPMを表示します。 24時間制を使用するロケールでは、何も表示されません。
- %y *-先行ゼロなしで年数(0-9)を表示します。 これがユーザー定義の数値形式で唯一の文字である場合は、%y *を使用します。
- *%yy *-該当する場合、先頭にゼロを付けて2桁の数値形式で年を表示します。
- *%yyy *-年を4桁の数値形式で表示します。
- *%yyyy *-年を4桁の数値形式で表示します。
- %z *-先行ゼロなしでタイムゾーンオフセットを表示します(例: -8). これがユーザー定義の数値形式で唯一の文字である場合は、%z *を使用します。
- *%zz *-を表示します。 先行ゼロのタイムゾーンオフセット(例: -08)
- *%zzz *-完全なタイムゾーンオフセットを表示します(例: -08:00)。
ご覧のとおり、フォーマット文字列では大文字と小文字が区別されます。 異なるケースを使用することにより、異なるフォーマットを取得できます。
DAX数式出力のデータ型の変更
DAX数式では、出力のデータ型はソース列によって決定され、結果のデータ型を明示的に指定することはできません。 これは、最適なデータ型がPower Pivotによって決定されるためです。 ただし、Power Pivotによって実行される暗黙的なデータ型変換を使用して、出力データ型を操作できます。 それ以外の場合は、特定のDAX関数を使用して出力データ型を変換できます。
暗黙的なデータ型変換の使用
- 日付または数値文字列を数値に変換するには、1.0を掛けます。 たとえば、=(TODAY()+ 5)* 1.0。 この式は、現在の日付に5日間を加えて計算し、結果を整数値に変換します。
- 日付、数値、または通貨の値を文字列に変換するには、値を空の文字列と連結します。 たとえば、= Today()&“”
データ型変換のためのDAX関数の使用
あなたは次のDAX機能を使用することができます-
- 実数を整数に変換します。
- 実数、整数、または日付を文字列に変換します。
- 文字列を実数または日付に変換します。
これについては、次のセクションで学習します。
実数を整数に変換する
次のDAX関数を使用して、実数を整数に変換できます-
- ROUND(<number>、<num_digits>)*-指定された桁数に数値を丸め、10進数を返します。
- CEILING(<number>、<significance>)*-数値を最も近い整数または最も近い有意の倍数に切り上げ、10進数を返します。
- FLOOR(<number>、<significance>)*-数値を最も近い有意の倍数にゼロに切り下げ、10進数を返します。
実数、整数、または日付を文字列に変換する
次のDAX関数を使用して、実数、整数、または日付を文字列に変換できます-
- FIXED(<number>、[<decimals>]、[<no_comma>])*-数値を丸めて、結果をテキストとして返します。 小数点の右側の桁数は2または指定された小数点以下の桁数です。 結果はコンマ付き、またはオプションでコンマなしです。
- FORMAT(<value>、<format_string>)*-指定されたフォーマットに従って値をテキストに変換します。
日付を文字列に変換するためのFormat関数の使用については既に学習しました。
文字列を実数または日付に変換する
次のDAX関数を使用して、文字列を実数または日付に変換できます-
- VALUE(<text>)*-数値を表すテキスト文字列を数値に変換します。
- DATEVALUE(date_text)*-テキスト形式の日付を日時形式の日付に変換します。
- TIMEVALUE(time_text)*-テキスト形式の時刻を日時形式の時刻に変換します。