Разбор DAX Query с регулярным выражением для получения мер и измерений - PullRequest
2 голосов
/ 08 апреля 2019

Я хочу создать приложение, которое использует расширенные события для анализа использования моделей служб аналитики Azure. В частности, я хочу знать, какие меры и измерения используют конечные пользователи.

Я смотрю на событие QueryEnd и пытаюсь проанализировать поле TextData. В зависимости от инструмента, используемого для запроса модели, я получаю либо MDX, либо DAX в TextData.

Я думаю, что мне удалось проанализировать MDX с этим RegEx: ([[\ w] +]. [[\ W] +] (?:. (?: Members | [Q \ d]))?) (из этого поста: Регулярное выражение для извлечения элемента из запроса MDX )

Теперь разбор DAX - это проблема. Если я запрашиваю модель из FX PowerBI, я получаю DAX, как это:

EVALUATE 
TOPN(
502,
SUMMARIZECOLUMNS(
ROLLUPADDISSUBTOTAL('Product'[Color], \"IsGrandTotalRowTotal\"),
\"Order_Count\", 'SalesOrderDetail'[Order Count]
),
[IsGrandTotalRowTotal],
0,
[Order_Count],
0,
'Product'[Color],
1
)
ORDER BY
[IsGrandTotalRowTotal] DESC, [Order_Count] DESC, 'Product'[Color]

То, что я хотел бы сопоставить с RegEx:

'Product' [Color] и 'SalesOrderDetail' [Order Count]

И .... откуда мне знать, что Счетчик заказов используется в качестве меры, в то время как Цвет является атрибутом измерения Продукта? ..... думаю, я не буду?

Большое спасибо Nicolaj

1 Ответ

0 голосов
/ 08 апреля 2019

думаю, я только что нашел возможное решение для анализа запросов DAX и MDX:

([\[\'][\w ]+[\]\']\.?[\[\'][\w ]+[\]\'])(?!.*\1)

Это даст мне то, что мне нужно .... без дубликатов. Улучшения приветствуются: -)

...