カラムが既知の幅で、幅があまり広くない場合は、この方法を使用できます。混合文字と数字のあなたの列が[Letters And Numbers]
と呼ばれていると仮定しましょう:もちろん
Just The Numbers = IFERROR(VALUE(MID([Letters And Numbers], 1, 1)), IFERROR(VALUE(MID([Letters And Numbers], 2, 1)), BLANK()))
、あなたが列に複数の番号を期待するならば、これは複雑になります。
その場合は、非常に DAX言語を使用するのが不便です。
Just The Numbers = SUBSTITUTE(SUBSTITUTE([Letters And Numbers], "A", ""), "B", "")
以外の数の非数値文字が必要な場合を除き、次のように書く必要があります。
編集クエリセクションでMを使用する方がはるかに優れています。次のように定義されたカスタム列の追加:
= Table.AddColumn(#"Previous Step", "Just The Numbers", each Text.Combine(List.RemoveItems(Text.ToList([Letters And Numbers]),{"A".."z"})))
をそして、あなたはSSAS平板モデルに直接クエリを使用しているので、あなたはMを使用できない場合は、その後、唯一のオプションは、ロードするSQLクエリを変更することが考えられます追加の列を追加するために表を表形式モデルに追加します。
は、おそらくそれを行うことができ、いくつかのT-SQLの多くの例があり、ここでは1です:
私は私の質問を更新し
USE AdventureWorksDW2012;
WITH split AS (
SELECT AddressLine1, v.number, character.c
FROM DimReseller AS r
JOIN master..spt_values AS v ON v.number BETWEEN 1 AND LEN(r.AddressLine1)
CROSS APPLY (VALUES(SUBSTRING(r.AddressLine1, v.number, 1))) AS character(c)
WHERE v.type = 'P'
AND character.c LIKE '[0-9]')
SELECT AddressLine1,
output = (SELECT c
FROM split
WHERE r.AddressLine1 = split.AddressLine1
ORDER BY number ASC
FOR XML PATH, TYPE).value(N'.[1]', N'bigint')
FROM dbo.DimReseller AS r
GROUP BY AddressLine1;
、あなたは私の質問は良い答えのために十分解明されていません気付きました。 – uzr
Mを使用してクエリを編集することはできません。この場合、私はPowerBIのデータソースとしてDirect Queryを持つテーブルSSASモデルを使用しています。 – uzr